WEB:题目名称-文件包含

背景知识

        

题目

WEB:题目名称-文件包含_第1张图片

WEB:题目名称-文件包含_第2张图片 

题目了文件包含,所以想到了php伪协议

构造payload尝试读取flag.php

/?filename=php://filter/read=convert.base64-encode/resource=flag.php

 WEB:题目名称-文件包含_第3张图片

 页面提示“do not hack”猜测可能是黑名单检测敏感字符串。猜测字符串哪些被禁用,这里输入单个字符串

构造payload

/?filename=base64

WEB:题目名称-文件包含_第4张图片

仍提示“do not hack”

构造payload

/?filename=convert

WEB:题目名称-文件包含_第5张图片

没有提示 "do not hack!",可以推测 "base64" 字符串在黑名单里。经过调试,"base64"、"string"、"read" 等都在黑名单里。 

在这里测试一下能不能用data://(涉及php.in的allow_url_include配置)

构造payload

/?filename=data://text/plain,1234567

WEB:题目名称-文件包含_第6张图片

 如果成功则会返回1234567,但是页面无,所以知道没有开启 allow_url_include

现在考虑 php://filter 有没有其他过滤器可以用

WEB:题目名称-文件包含_第7张图片

convert.iconv 相当于用了 iconv() 函数,这个函数是转换数据的字符集,比如 iconv("ASCII", "UTF-8", $string),也就是说只转换数据的表现形式,拿到数据之后,再把它的字符集转回来就行了。

利用姿势,把flag.php的内容从UCS-2LE.UCS编码转换为UCS-2BE编码

构造payload

/?filename=php://filter?convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php

WEB:题目名称-文件包含_第8张图片

还是不行, 但是还有很多字符集可以尝试

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*

用 bp爆破,暴力破解 intruder 模块有个“cluster bomb” (集束炸弹)模式,可以把上面所有的 16 个字符集格式做一个笛卡尔积,生成 256(16 *16)个请求。

设置位置 1 和位置 2 使用的字典,都是同一个

WEB:题目名称-文件包含_第9张图片

WEB:题目名称-文件包含_第10张图片 

爆破完成后可发现flag

或者

设置payload

/?filename=php://filter/convert.iconv.UTF-7.UCS-4*/resource=flag.php

WEB:题目名称-文件包含_第11张图片

 参考文章链接:

攻防世界 - (题目名称-文件包含)_封于修x的博客-CSDN博客

php://filter_php://filter/_木…的博客-CSDN博客

你可能感兴趣的:(攻防世界,前端,web安全,网络安全)