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