PHP2 (urldecode函数引起的问题)


进入链接后,啥都没有。只有一句话

毕竟题目使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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM