这一题纯属就是障眼法,和我们的随机数毫无关系
绕过guess是不可能的,hash_equals
也是很安全的hash比较函数。只能从$_SERVER['PHP_SELF']
下手。此时想要读config.php
,你就会发现正则是个很棘手的问题。
但是其实仔细看可以发现这里有蹊跷:
正则ban掉了config.php。然后会highlight_file():
可以发现这里加上了basename(),可能是为了夸目录读文件,而问题正好出在了这里,演示:
当我访问zz.php时,我可以在后面加上一些东西,比如/test.php/config.php,这样仍然访问的是test.php,但经过basename()后,传进highlight_file()函数的文件名变成了12.php,如果能够绕过那个正则,就可以得到config.php源码了,而题目告诉FLAG就在config.php里,这道题就昨晚了。所以说。爱国随机数就是个障眼法。
可以发现,这个正则匹配了config.php/为$_SERVER[‘PHP_SELF’]的结尾
老套路了,可以用%0d之类的来污染绕过,这样任然访问得到index.php:
/index.php/config.php/%0d 然后尝试在后面加上?source但是却失败了。这里绕过正则主要是通过后面填充一些东西来绕过正则中的<font style="color:#000000;">$</font>
,于是写了个脚本跑一下看看什么东西能成功:
<font style="color:#000000;background-color:#FADB14;">import</font><font style="color:#000000;background-color:#FADB14;"> requests</font>