开卷看题
/web8/1.png)
给了一段提示:txt????
/web8/2.png)
代码审计题
代码分析
1 |
|
总结一下:经过extract函数解析后,如果$ac值和$fn文件内容一致则输出flag
开始探索
现在问题是:我们怎么能确定文件内容呢?
当时我(笨比)的想法是:找一个能确定内容的文件,于是灵光一闪,七窍接通,突然想到会不会存在其他的小文件,紧接着扫了一下目录。。。。
/web8/3.png)
还真有(我可真是太机智了),访问flag.txt
/web8/4.png)
NICE啊,得到了具体的内容
可以构造payload了:ac=flags&fn=flag.txt
/web8/5.png)
NICE啊,拿到了flag,不禁给自己鼓掌(当时膨胀的差点飞出宇宙)
后续发展
感觉这次无比顺利之后便开始研究其他解决方案,突然想到,页面的源码应该就是index.php的,这不就是一个可以确定内容的吗
于是乎,开始熟练地构造payload:ac=%3C%3F%70%68%70%0D%0A%65%78%74%72%61%63%74%28%24%5F%47%45%54%29%3B%0D%0A%69%66+%28%21%65%6D%70%74%79%28%24%61%63%29%29%0D%0A%7B%0D%0A%24%66+%3D+%74%72%69%6D%28%66%69%6C%65%5F%67%65%74%5F%63%6F%6E%74%65%6E%74%73%28%24%66%6E%29%29%3B%0D%0A%69%66+%28%24%61%63+%3D%3D%3D+%24%66%29%0D%0A%7B%0D%0A%65%63%68%6F+%22%3C%70%3E%54%68%69%73+%69%73+%66%6C%61%67%3A%22+%2E%22+%24%66%6C%61%67%3C%2F%70%3E%22%3B%0D%0A%7D%0D%0A%65%6C%73%65%0D%0A%7B%0D%0A%65%63%68%6F+%22%3C%70%3E%73%6F%72%72%79%21%3C%2F%70%3E%22%3B%0D%0A%7D%0D%0A%7D%0D%0A%3F%3E&fn=index.php
但是这次无论怎么搞也失败,没办法看看其他大佬的思路
惊世骇俗
不得不说我学过的都顺着呼吸离开了我的身体,瞻仰一下大佬的解决方案
利用data协议直接构造任何数据,666
data协议详细参考:传送门
懂了吧,所以payload可以写成:ac=xxx&fn=data:,xxx
/web8/6.png)
又快又方便,满分
惊不惊喜,刺不刺激?
后记
记得第一次看见data协议是在HTML中表示img,虽然很简单但是。。关键时候你就想不到