攻防世界文件包含入门题目,依旧参考大佬的WP有所补充,内容对小白友好~
网页中直接存在源码,在此翻译和分析~
WRONG WAY!
解题思路如下:
1 根据第12行 include($file1);
应该在file1中传入可以读取flag.php的语句~
2 根据第10行 if(file_get_contents($file2) === "hello ctf")
应该在file2中传入字符串"hello ctf"~
工具:BurpSuite或hackbar
参考:admin的官方WP、小王学信安的fileclude简单的文件包含、我爱喝牛奶的wp
1 Burp Suite
file1=php://filter/read=convert.base64-encode/resource=flag.php 用来读取源码12行中文件flag.php中的语句~
php://filter/read=执行文件读取功能,介绍如下图所示,感兴趣可参考官方手册:PHP: php:// - Manual(下面两张截图均出自此链接,对解题很有帮助~);
convert.base64-encode执行Base64编码功能;
/resource=flag.php填写flag.php所在的目录~
file2=php://input 表示访问语句,可以在文件末尾加上源码第10行要求的内容hello ctf~
注意:参数是通过HTTP的数据包上传的,而HTTP的请求方法有 get、head、post三种。其中前两种get、head只接收开发者内定好的参数,你发其他的内容服务器是不会理你的~所以请求方法优先使用post,这种类型的请求适合向服务器发送数据~
emm...然而本题无论是使用get还是post都是可以成功的~
file1与file2需要同时满足条件,所以第一行请求的网址的输入语句为:
POST /?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input HTTP/1.1
file1读取文件flag.php,同时file2根据源码要求,在请求包末尾添加 hello ctf ~
鼠标右键菜单栏,选择send to Repeater,在Repeater模块中做以上调整,然后点击发送~
Response末端出现以Base64编码的flag,右键sent to decoder送到Burpsuite的Decoder模块;在鼠标右侧菜单栏选择Decode as base64解码~
$flag = cyberpeace{0a7246c2d4a20787121f0856bdf8ec59}
2 Hackbar
以下参考 我爱喝牛奶的wp
同样的思路,换一个工具,打开chrome,安装好扩展程序HackBar以后,快捷键F12调出开发者工具:
满足下列条件:
file1=php://filter/read=convert.base64-encode/resource=flag.php 以Base64的格式读取文件flag.php中的语句;
file2=data://text/plain,hello ctf 以纯文本格式写入题目要求的内容hello ctf~
data://执行条件:需要受限于php.ini的文件设置 allow_url_fopen 开启(允许将URL作为文件打开处理),allow_url_include 开启(允许文件包含)~
↑截图来源:PHP: data:// - Manual
file1与file2需要同时满足条件,所以url行的输入语句为:
http://61.147.171.105:63495/?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf
点击EXECUTE,出现Base64编码的flag~
flag解码的流程:将回显代码粘贴在hackbar中,选择encoding,base64格式编码~
解码答案~
$flag = cyberpeace{0a7246c2d4a20787121f0856bdf8ec59}
博文写得模糊或者有误之处,欢迎留言讨论与批评~
码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)