进入链接后,啥都没有。只有一句话
毕竟题目使PHP2,我尝试用御剑扫了一下
扫到了index.phps
<?php if("admin"===$_GET[id]) { echo("<p>not allowed!</p>"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") { echo "<p>Access granted!</p>"; echo "<p>Key: xxxxxxx </p>"; } ?> Can you anthenticate to this website?
代码审计一波
第一个绕过是,传入的id值不能等于admin
第二个弱类型判断是否等于admin
中间有个urldecode --->>>>>这个可以帮助我们绕过
payload: ?id=%2561dmin
把a编码两次,在传入
(浏览器会对请求的URL中非ASCII码字符进行编码。这里不是指对整个URL进行编码,而是仅仅对非ASCII码字符部分进行编码,并且是编码为16进制带%)
原理:服务器会自动解码一次,然后php中urldecode也会解码一次,呢么利用这个urldecode后再进行第二个判断,呢么第一个判断中式中的id参数值为%61dmin当然与admin 不同了
中间讲过urldecode函数后,解码为再解码admin