news 2026/6/15 20:46:06

assert函数eval函数蚁剑的思考

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
assert函数eval函数蚁剑的思考

关于assert函数

官方文档:PHP: assert - Manual

在PHP版本<7.0时

assert会将传入的参数试着作为PHP代码去执行,这个参数可以是一个函数或者是一个表达式(是表达式时和本文讨论内容关系不大,具体请参考官方文档中的演示)也可以是一个字符串。在参数是字符串时则对其中的PHP代码语法要求不严格(字符串中的PHP代码最后一句代码尾端的;可以省略,其余的则不行),但对于多句PHP代码组成的字符串只会执行第一句(如果这个字符串中PHP代码存在语法错误则该字符串中的所有PHP代码均不会被执行)。

在PHP版本>=7.0时
在这时PHP对于assert函数进行了更新(具体是在PHP7的哪个版本这里博主并不清楚Orz,但这个更新导致的后果通常是对于7.0及以上的版本来讨论的),assert在更新后无法将使用字符串作为参数,而传入GET或POST的数据默认的类型就是字符串,这就导致了assert不适宜再用来直接写马。

奇怪的特性

assert无法执行关于echo的代码,起初以为是echo是语言构造器的原因,但是用了同为语言构造器的print,发现却能用,emmmm…

关于eval函数

官方文档:PHP: eval - Manual

eval会将传入的字符串作为PHP代码来进行解析,字符串中可以包含多句PHP代码,且所有的PHP代码均会被执行,但如果存在语法错误则整个字符串中的PHP代码均不会执行。字符串中可以包含PHP标签,但必须和已存在的标签闭合(PHP文件头部和尾部的PHP标签)。此外eval并没有assert的奇怪特性,关于echo的代码能够被正常执行。

关于蚁剑

要明白为什么会此前payload中仅有部分可用就得先明白蚁剑通过payload中的SHELL究竟干了啥,这里用wireshark看下蚁剑发的包(这里蚁剑编码采用了base64,用default会导致有时的连不上马)。

可以看到蚁剑使用了POST方式对cmd传入eval执行一个随机生成的POST变量名的值base64解码,并且获得了相应的响应,便有了蚁剑绿色框显示的连接成功。这里将POST变量名的值转码一下再继续观察。

通过观察这段蚁剑测试连接起主要作用代码,不难发现两个特点:

使用了echo
由多句PHP代码构成
那么结论就明了了,关于payload部分可用的结果可以做出如下解释:

使用GET值作为马的连接密码的payload全部不可连接->蚁剑探测马是否可以用只使用了POST方式进行探测
仅使用assert的payload不可连接->原因有两个,一是因为蚁剑用来探测的语句由多句PHP代码构成,但assert只能执行第一句PHP代码;二是因为探测的语句使用了echo,而assert无法执行关于echo的代码

参考文章:https://www.cnblogs.com/Article-kelp/p/14704975.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:55:18

【人工智能学习-AI入试相关题目练习-第八次 】

人工智能学习-AI入试相关题目练习-第八次1-前言3-问题题目训练4-练习&#xff08;日语版本&#xff09;解析一、&#xff08;a&#xff09;&#xff5e;&#xff08;j&#xff09;对照答案【官方版】二、和我们之前答案的「差异点说明」&#xff08;很重要&#xff09;① (c) 接…

作者头像 李华
网站建设 2026/6/15 14:34:10

百度网盘下载加速:免费直链助手使用全攻略

百度网盘下载加速&#xff1a;免费直链助手使用全攻略 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 还在为百度网盘的下载速度发愁吗&#xff1f;想要免费享受高速下载体验却找不到合适的方…

作者头像 李华
网站建设 2026/6/15 11:24:15

解锁AMD Ryzen隐藏性能:SMU Debug Tool完全指南

解锁AMD Ryzen隐藏性能&#xff1a;SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/6/14 7:21:15

GPEN支持多种输入格式?jpg/png文件识别与转换技巧

GPEN支持多种输入格式&#xff1f;jpg/png文件识别与转换技巧 你是不是也遇到过这样的问题&#xff1a;手头有一张模糊的老照片&#xff0c;想用GPEN修复&#xff0c;结果发现图片是JPG格式&#xff0c;而教程里默认用的是PNG&#xff1b;或者上传时提示“不支持的文件类型”&…

作者头像 李华
网站建设 2026/6/15 13:19:13

Jasminum:重新定义Zotero中文文献管理体验

Jasminum&#xff1a;重新定义Zotero中文文献管理体验 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究的浩瀚海洋中&am…

作者头像 李华