滲透測試小技巧之過waf木馬

2021-12-29 20:04:01 字數 2042 閱讀 8505

在研究webshell查殺的時候,學習別人怎麼繞waf的思路,今天發現乙個很6的函式(至少之前我是沒見過),然後結合之前寫訪問日誌記錄檔案時用到的方法,very perfect!

once step

普通一句話木馬:

second step

首先大家看下這個東西:

不知道大家看到這個字串會有啥想法,反正說實話,之前我肯定不會太在意。看下原始碼:

$compressed = gzcompress('', 9);$uncompressed = gzuncompress($compressed);echo $compressed; ?>

third step

那麼重點來了!

我要說的就是 gzcompress 這個函式。然後我又查了查相關資料,找到了php中具有相同功能的函式還有兩個: gzdeflate , gzencode 。

科普下:

壓縮函式:gzcompress gzdeflate gzencode 解壓函式:gzuncompress gzinflate gzdecode gzdecode是php 5.4.0之後才加入的,使用的時候要注意相容性問題。這幾個函式都以gz開頭,讓人想到gzip壓縮,而光看函式名卻又看不出它們之間的區別,只能查文件。 gzcompress gzdeflate gzencode函式的區別在於它們壓縮的資料格式不同: gzcompress使用的是zlib格式; gzdeflate使用的是純粹的deflate格式; gzencode使用的是gzip格式;其實從php 5.4.0開始,這三個函式是一樣的,只不過第三個引數的預設值不同;如果呼叫時傳入第三個引數,那麼這三個函式返回的資料相同。有興趣的自己在找找吧

fourth step

寫個生成密文的檔案。

考慮到可能字元顯示不全,無法識別等原因,再套一層base64。

if(isset($_post['str'])) ?>fifth step

結合訪問日誌記錄用到的 getallheaders 函式,最終的webshell如下:

用d盾查一下

雖然級別是小於3,但是說明裡面顯示可能eval後門,所以要去掉這個,在變形下:

看下webshell可用性

這裡注意下,使用eval的話會報錯,具體的原因請檢視 錯誤詳情

在安利下命令執行的一些函式:

'`',eval,assert,exec,passthru,shell_exec,system,putenv,preg_replace,pcntl_exec,popen,proc_open

sixth step

再用d盾檢測下

還是可疑啊,那行再偽造偽造下

not found

the requested url was not found on this server.

再檢測下:

360 5引擎檢測下

如果覺得自己新增頭麻煩可疑使用自帶的請求頭欄位:

getallheaders()['accept-language'] getallheaders()['user-agent'] getallheaders()['accept']

滲透測試中waf命令執行的繞過經驗技巧

管道符 順序執行,命令之間沒有邏輯關係 正常順序執行 邏輯與 當命令1正確執行後,才會執行命令2。否則命令2不會執行 兩個命令都會執行 邏輯或 當命令1不正確執行後,命令2才會執行。否則命令2不會執行 mi會執行whom 其他特殊符號 符號 作用 單引號,在單引號中所有的特殊符號,如 和 反引號 都...

滲透測試技巧更新5

1.for d i in d freehost do echo i 列出d的所有目錄 for d i in do echo i 把當前路徑下資料夾的名字只有1 3個字母的打出來 2.for r i in exe do echo i 以當前目錄為搜尋路徑.會把目錄與下面的子目錄的全部exe檔案列出 f...

常用小技巧 測試

1.如何判斷乙個數是否是整數 2.如何判斷乙個數後面是否有小數 3.保留兩位有效數字,但是沒說要四色五入 4.確定字元陣列的大小 5.確定輸入的字串會自帶 0 1.如何判斷乙個數是否是整數 if int a b 判斷是乙個數是否是整數 cout yes 如何判斷乙個數後面是否有小數 double n...