XCTF-高手进阶区:PHP2
生活随笔
收集整理的這篇文章主要介紹了
XCTF-高手进阶区:PHP2
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
XCTF-高手進階區(qū):PHP2
目標:
Writeup
(1)首先我們用dirsearch.py進行網(wǎng)站目錄搜索
(2)我們發(fā)現(xiàn)有個index.php,我們訪問一下,沒有結果...
那么我們看看能否看看該網(wǎng)頁php地源碼,這里用到了.phps
.phps后綴釋義: phps文件就是php的源代碼文件。 通常用于提供給用戶(訪問者)查看php代碼,因為用戶無法直接通過Web瀏覽器看到php文件的內(nèi)容,所以需要用phps文件代替(3)于是我們訪問index.phps,看到下圖所示:
(4)好的,接下來我們來分析可以獲得key值即flag值的核心源碼
- 第一步:觀察源碼
- 第二步:我們需構造id=admin,瀏覽自動對id值進行一次解碼,結果還是admin
這樣就OK了,我們來測試一下:
嗯?這是為什么呢?難道后端代碼對admin字符進行了過濾?不讓傳admin字符?
ctrl+U看到完整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?先嘗試了0==admin返回true,但是失敗了,看來可能只能admin==admin才能輸出flag?,但又要不滿足"admin"===$_GET[id],該如何?
行吧,那我們嘗試一下對admin進行url編碼吧
- 第三步:再次構造payload
注意:瀏覽器在上傳數(shù)據(jù)時,會對參數(shù)值進行一次解碼(與php代碼無關,是瀏覽器自身會解碼一次)
admin第一次url編碼:%61%64%6D%69%6E
由上面分析的代碼可以知道,%61%64%6D%69%6E經(jīng)過瀏覽器的一次自動解碼,變成admin,之后又當作id的值傳入代碼中,經(jīng)過urldecode,admin還是admin,服務器后端依舊會過濾admin
- 第四步:因此,我們需要二次編碼,瀏覽自動對id值進行一次解碼,結果id在傳輸過程中變?yōu)閕d=%61%64%6D%69%6E
admin二次編碼值:%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45
這樣,%61%64%6D%69%6E就不會被過濾了
(6)最后:我們訪問
http://111.198.29.45:41202/?id=%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45
注:下圖中原本是輸入的%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45,因為瀏覽器自動一次解碼變成了%61%64%6D%69%6E
注:此題%2561dmin也可以,一次解碼后為%61,二次解碼后為a。
%2561=%25%36%31,也可以看出,解碼只會解%后面的兩位數(shù),其它數(shù)值沒有%不解碼
總結
以上是生活随笔為你收集整理的XCTF-高手进阶区:PHP2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 韩剧tvapp怎么不能看了
- 下一篇: 影流之主是什么位置 免费观影第一站