源码:
1 | <?php |
最大的难点在preg_match("/\\|\056\160\150\x70/i",$third)
这句,因为php会自动把所有带\
的转译,并且会转译到不能转移为止,所以这句话实际上是preg_match("|.php/i",$third)
这里构造payload我就直接利用他给的|.php
构造了,所以为了绕过substr($third,5)
,要在前面补四个字母,不能是flag所以只能选“girl”
所以前面就补一个base64加密后的“flag”,为ZmxhZw==
所以最后的payload为:?zero=ZmxhZw==&first=girl|.php
得到flag
也可以把后面的全部消除掉,那么base64加密的就是flag.php(ZmxhZy5waHA=,因为正好有a,所以可以绕过上面的验证)
payload为:?zero=ZmxhZy5waHA=&first=|.php