攻防世界-web PHP2
阿新 • • 發佈:2020-10-22
首先我們先將環境下載下來。
進入之後 ,發現一句話
Can you anthenticate to this website?大概就是在說,你能告訴我這個網站嗎? 嘶,先F12一手吧。啥也沒有。然後掃描了一下目錄。有一個index.php,然後在位址列裡輸了一下,發現什麼也沒有。 這就很鬱悶了。然後我在index.php後加了個s,index.phps。然後就出效果了。 這或許是原始碼洩露了。然後檢視一手原始碼。 這是php程式碼。那我來吧程式碼扔下來吧<?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?
又要程式碼審計了。
在這裡我們先說一下===與==的區別
===是比較值和資料型別
==它是比較值,不比較資料型別
例如:$a='123' $b=123
$a===$b //False
$a==$b //True
裡面有一個urldecode,意思就是用於解碼已編碼的 URL 字串,其原理就是把十六進位制字串轉換為中文字元
要求admin不能等於get傳過來的值,又要求在get傳過來的值經過urldecode後等於admin
而且瀏覽器會對非ASCII字元自動進行一次urldecode,所以我們還得編碼兩次。
所以pyload就為:
http://220.249.52.133:51297/index.php?id=%2561dmin
%2561解碼就是%61 //第一次解碼
%61解碼就為a //第二次解碼
這樣即可拿到flag
Key: cyberpeace{292e9413104ba4842802367e5e9da7aa}
最後再說一下index.phps吧
phps其實就是php Source,根據意思也可以知道是php原始碼。
所以phps就是php的原始碼檔案。通常用來給使用者檢視php程式碼的。因為使用者無法直接在Web瀏覽器檢視php檔案裡的內容。然後需要用到phps檔案來代替了。