zoukankan      html  css  js  c++  java
  • 某CTF平台一道PHP代码审计

    这道题不是说太难,但是思路一定要灵活,灵活的利用源码中给的东西。先看一下源码。

          

                     

                                                                            

    首先要理解大意。

    这段源码的大致的意思就是,先将flag的值读取放在$flag里面。

    后面再接受你输入的值进行判断(黑名单)。说实话这道题后面把eval去掉也是可以做的。既然这道题把flag的值放进了变量里面,那么我们就需要将其输出就行了!!

    当然这里面是有waf的。

    我们看一下吧

                                                                                                    

    基本的waf都在这里面。其他的都好理解,就是那个get_defined_functions()有点不同。

    查了一下大致意思就是说输出当前进程所有变量/常量/模块/函数/类的示例。本机试验了一下。。

              

    有点多,这个就是保证有很多的内置函数你都用不了。。

    不着急,因为那个foreach就是用来判断输入是否有误。。

    你可以看一下$who的初始值,base64解码后发现为flag,而$flag就是我们要读取的变量!

    所以我们可以试一下双重变量,即$$,一开始构造的是?cmd=${base64_decode($who)},但是发现下划线也被过滤了!!!后来又发现源码中不是给了我们一个base64解码函数吗233

    于是构造 ?cmd=${helper($who)}

    成功读取flag

    当然还是有办法命令执行的,我的思路就是使用一个变量来接受base64解码后的值,然后再根据这个变量来调用函数

    payload?cmd=Mikasa;$a=helper('cGhwaW5mbw==');$a()

    成功执行phpinfo()

    后面的大体上都需要用到helper这个函数

  • 相关阅读:
    前端时间格式化
    Navicat for Oracle
    在JSP中使用Session
    在JSP中使用MD5
    QTP的那些事用QTP测试Web上的Ajax
    VBS函数应用getobject的使用获得Automation对象
    QTP的那些事Excel导入QC没反应的解决方法
    QTP的那些事QC远程执行QTP经常出现QTP崩溃现象解决方案
    QTP的那些事自动化的个人体会感悟(转)
    QC在win7远程执行QTP脚本excel不能读取,及其其他win7问题解决方案(图解转)
  • 原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/11110720.html
Copyright © 2011-2022 走看看