问题描述:
攻防世界文件包含入门题目,参考大佬们的WP有所补充,内容对小白友好~
原因分析:
按照惯例,首先查看源代码ctrl+u:
整理一下大概是下面这个意思(代码0基础,可能有误,欢迎留言沟通与指正~)
//规定 HTML 文档的字符集
Notice: Undefined index: language in /var/www/html/index.php on line 9
Please choose the language you want : English or ChineseHi,EveryOne,The flag is in flag.php
//页面显示内容,其中提示了language的设置与地址,flag所在地址。
所以题目的关键在于达成这第15行的条件:
$lan = $_COOKIE['language'];
在cookie中的内容language 会被传到变量$lan,继而在第23行@include($lan.".php");被调用与执行,因此cookie变量中很适合写入读取flag.php的payload~
解决方案:
工具:burpsuite 或 hackbar(浏览器插件)
参考:admin发表的官方WP zhan3614发表的WP fileinclude
1 Burp Suite抓包
首先用Burp Suite拦截网页的请求包,页面如下图所示:
emm,发现没有题目要求的变量cookie,这样就很难实现题目要求的条件了...
2 添加cookie
现在需要手动添加cookie,可以通过burpsuite或者hackbar添加~
1)Burp Suite,在页面的右下角Request Cookies可以找到添加变量的位置~
Name:language
Value:php://filter/read=convert.base64-encode/resource=/var/www/html/flag
Name的值为第15行代码要求的名称,Value的值可将flag(.php)内容以Base64编码的形式读取~
php://filter/read=执行文件读取功能~(官方介绍:PHP: php:// - Manual)
convert.base64-encode执行Base64编码功能~
/resource=/var/www/html/flag填写flag.php所在的地址,本题在源码的第5行有提示地址为language in /var/www/html/index.php on line ;且需要注意注意源码第23行的内容(@include($lan.".php"); ),在上传参数时代码会附带后缀.php,所以此处不需要写为 '/var/www/html/flag.php'~
或者可以直接复制这一行到请求包末尾(同样的语句,经过URL编码):
Cookie: language=php%3a%2f%2ffilter%2fread%3dconvert.base64-encode%2fresource%3d%2fvar%2fwww%2fhtml%2fflag
消息变成如下所示以后发送:
然后就得到了一个 编码为Base64的flag,如下图~
右键传到burpsuite自带的解码模块decoder中可以解码~
$flag=cyberpeace{9fbd1f023749c48900cf215fe902c204}
2)采用chrome的扩展工具hackbar 添加cookie的值;解题的思路与上面是一致的:F12调出开发者工具,操作步骤如下图就可以~
Name:cookie
Value:language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag
页面上方回显以base64格式编码的flag,复制到网址栏,随后可用hackbar自带的解码模块encoding找到base64 encode选项进行解码~
flag=cyberpeace{9fbd1f023749c48900cf215fe902c204}
博文写得模糊或者有误之处,欢迎留言讨论与批评~
码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)
来源地址:https://blog.csdn.net/weixin_42789937/article/details/127956777