關(guān)于php偽協(xié)議在ctf中的調(diào)查
1
php://input協(xié)議
第一個(gè)例子
flag.php
看看上面的php代碼,就知道讀取文件的內(nèi)容是thisisisi。 只有在test顯示flag的時(shí)候,我們才知道這個(gè)文檔有這樣的內(nèi)容,我們可以使用php。://本協(xié)議php://input可以獲得原始post數(shù)據(jù),只有瀏覽請求的原始數(shù)據(jù)的閱讀流,并將post請求中的數(shù)據(jù)作為PHP代碼執(zhí)行,并繞過以下操作:
使用條件:
allow_url_fopen:off/on
allow_url_include:on
第二個(gè)例子
php:實(shí)現(xiàn)代碼執(zhí)行//input
test1.將php改為以下
代碼執(zhí)行是通過POSTphp代碼實(shí)現(xiàn)的。
執(zhí)行php代碼?等一下,我能寫一個(gè)句子嗎?試試POST這個(gè)代碼。’);?>
注意:只有php5.2..17 下一次測試成功,其它都報(bào)錯(cuò)了,原因不明。
php://filter/convert.base64-encode/resource=
查看另一個(gè)代碼:
怎樣顯示flag?.php的內(nèi)容是什么?不會(huì)直接顯示,這個(gè)php就要用了。://filter/convert.base64-encode/resource=取源代碼并導(dǎo)出base64編碼,否則將直接作為php代碼執(zhí)行,看不到源代碼內(nèi)容。
php://filter也可以在雙off的情況下正常使用;
allow_url_fopen:off/on
allow_url_include:off/on
Base64解密獲取原始數(shù)據(jù):
使用反序列化讀取文件
借鑒2016xctf 一個(gè)問題的思路,代碼讓我簡化:
file);
return'yes';
}
}
$a= new flag();
$a->file= 'php://filter/convert.base64-encode/resource=flag.php';
$data= serialize($a);
echo$data.'
';
echounserialize($data);
對flag類進(jìn)行定義,并重寫tostring(),我們先new一個(gè)新的目標(biāo),然后給變量賦值,最后實(shí)例化。
假設(shè)實(shí)例化后的變量在某個(gè)問題中是可控的,我們知道類內(nèi)容,那么我們可以通過可控變量讀取任意文件。在上述代碼中,flag在反序列化過程中完成。.讀取php文件
2
file://協(xié)議
file://雙off條件下協(xié)議也可以正常使用;
allow_url_fopen:off/on
allow_url_include:off/on
file://用于瀏覽本地文件系統(tǒng),通常用于在CTF中讀取本地文件而不受allow_url_fopen和allow_url對include的影響
日前某比賽web的第二個(gè)問題是通過注入控制反序列化,file:///協(xié)議閱讀本地文件
注:file://協(xié)議必須是絕對的路徑
zip:bzip2///://, zlib://協(xié)議
正常使用雙off前提是正常使用
allow_url_fopen:off/on
allow_url_include:off/on
payload:
http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg#code.txt
首先要實(shí)施的PHP代碼寫好文件名為phpcode。.txt,phpcode.用txt壓縮zip,壓縮文件叫file。.zip,如能上傳zip文件就可以直接上傳,如果不能就把file上傳。.zip重命名為file。.在上傳jpg之后,其它幾種壓縮格式也可以這樣操作。
因?yàn)?在get請求中會(huì)忽略后面的參數(shù)值,所以在使用get請求時(shí),url代碼應(yīng)該是#,在這里檢測相對路徑是不可行的,所以我們必須使用絕對路徑。
3
phar協(xié)議
1.jpg是含有1個(gè)jpg的一個(gè).php壓縮包,改變后綴名稱,包括以下方法。
include.php?f=phar://./images/1.jpg/1.php
4
zlib://協(xié)議
使用方法:
compress.zlib://file.gz
絕對路徑
http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/1.jpg
相對路徑
http://127.0.0.1/cmd.php?file=compress.zlib://./1.jpg
5
總結(jié)
以上只是最基本的例子,在ctf中要能夠靈活運(yùn)用,常言道再難的問題也離不開基礎(chǔ)。
題外話:最近國內(nèi)ctf比賽越來越國際化,pwn、re題占絕大多數(shù),web題很少或沒有直接,作為一只web狗要堅(jiān)強(qiáng)地走下去。
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com