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