關于php偽協(xié)議在ctf中的調(diào)查
1
php://input協(xié)議
第一個例子
flag.php
看看上面的php代碼,就知道讀取文件的內(nèi)容是thisisisi。 只有在test顯示flag的時候,我們才知道這個文檔有這樣的內(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
第二個例子
php:實現(xiàn)代碼執(zhí)行//input
test1.將php改為以下
代碼執(zhí)行是通過POSTphp代碼實現(xiàn)的。
執(zhí)行php代碼?等一下,我能寫一個句子嗎?試試POST這個代碼。’);?>
注意:只有php5.2..17 下一次測試成功,其它都報錯了,原因不明。
php://filter/convert.base64-encode/resource=
查看另一個代碼:
怎樣顯示flag?.php的內(nèi)容是什么?不會直接顯示,這個php就要用了。://filter/convert.base64-encode/resource=取源代碼并導出base64編碼,否則將直接作為php代碼執(zhí)行,看不到源代碼內(nèi)容。
php://filter也可以在雙off的情況下正常使用;
allow_url_fopen:off/on
allow_url_include:off/on
Base64解密獲取原始數(shù)據(jù):
使用反序列化讀取文件
借鑒2016xctf 一個問題的思路,代碼讓我簡化:
file);
return'yes';
}
}
$a= new flag();
$a->file= 'php://filter/convert.base64-encode/resource=flag.php';
$data= serialize($a);
echo$data.'
';
echounserialize($data);
對flag類進行定義,并重寫tostring(),我們先new一個新的目標,然后給變量賦值,最后實例化。
假設實例化后的變量在某個問題中是可控的,我們知道類內(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的第二個問題是通過注入控制反序列化,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
首先要實施的PHP代碼寫好文件名為phpcode。.txt,phpcode.用txt壓縮zip,壓縮文件叫file。.zip,如能上傳zip文件就可以直接上傳,如果不能就把file上傳。.zip重命名為file。.在上傳jpg之后,其它幾種壓縮格式也可以這樣操作。
因為#在get請求中會忽略后面的參數(shù)值,所以在使用get請求時,url代碼應該是#,在這里檢測相對路徑是不可行的,所以我們必須使用絕對路徑。
3
phar協(xié)議
1.jpg是含有1個jpg的一個.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中要能夠靈活運用,常言道再難的問題也離不開基礎。
題外話:最近國內(nèi)ctf比賽越來越國際化,pwn、re題占絕大多數(shù),web題很少或沒有直接,作為一只web狗要堅強地走下去。
本文僅代表作者觀點,版權歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。
免責聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權或非授權發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com

