-----已搬运-------攻防世界:mfw --------assert() 闭合后的任意代码执行

这篇博客介绍了PHP中的assert()函数如何动态执行代码,将其与eval()进行对比,并通过一个攻防世界的题目展示了assert()在特定条件下的命令执行。作者详细描述了assert()的用法,包括其行为以及在代码执行中的潜在风险。在解决问题的过程中,作者揭示了如何利用assert()执行任意代码,并给出了具体的解决(WP)步骤。
摘要由CSDN通过智能技术生成

动态调用函数时的命令执行对于eval()和assert()的执行问题

一.学到的知识点:

  1. bool or die() 当 前面的 为真的时候,后面的就不执行了
  2. assert()语法 。的知识点如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。跟eval()类似, 不过eval($assertion)只是执行符合php编码规范的$code_str
    assert(mixed $assertion, $exception) // 返回值为bool型
    assert()会检查 assertion,并在结果为false的时候采取适当的行动。
  3. 自己的感觉把,就是assert()也是命令执行函数,但是要求比eval的低,只要里面有PHP的代码,然后动一动就能够执行了,详情可以看下面的
  4. 不足:。不够细心,没有研究透assert函数,并且刚开始没有想到去闭合strops这个函数,闭合后使strops这个函数依旧可以发挥作用。

讲真的没看懂是什么意思, 我这里一演示,就明白了,

第一次实验,感觉他和eval很像,能够执行任意命令
在这里插入图片描述

那么这句话, 当assertion结果为false的情况采取行动又是什么意思呢?

这里assertion为 false 也执行了,为true的时候更不用说,也执行,,,

在这里插入图片描述那么这就感觉像一个eval一样, 但是要求比eval更低一点,eval里面必须是严格的PHP代码才能够执行,
但是这个assert()呢,只需要这个字符串里面有PHP的代码就好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值