進入鏈接后,啥都沒有。只有一句話
畢竟題目使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