2026/2/22 7:46:13
网站建设
项目流程
龙岩做网站开发哪家厉害,做一回最好的网站,网站的数据库有什么用,wordpress 搜索结果分类关于assert函数
官方文档#xff1a;PHP: assert - Manual
在PHP版本7.0时
assert会将传入的参数试着作为PHP代码去执行#xff0c;这个参数可以是一个函数或者是一个表达式#xff08;是表达式时和本文讨论内容关系不大#xff0c;具体请参考官方文档中的演示#xf…关于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 - Manualeval会将传入的字符串作为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