zoukankan      html  css  js  c++  java
  • [RoarCTF 2019]Easy Calc PHP字符串解析漏洞、部分php函数

    1.  题目为一个提交框,可提供计算功能

     但是不能输入字母符号等等

    2.  抓包后分析

     发现页面为JavaScript判断,并且发现calc.php,进里面看看

     可以发现过滤了不少的符号,但是也发现了运行机制

     urlget形式传参数num并且在后端进行过滤,如果是合法字符便eval执行php计算后输出。初步判断这里可以进行代码植入。

    3.  但是num只能接受运算式,这里我学到了php字符串解析漏洞。

    https://www.freebuf.com/articles/web/213359.html

    PHP将查询字符串(在URL或正文中)转换为内部$_GET或的关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用/news.php?%20news[id%00=42"+AND+1=0--绕过:


    运用到这题的话,在传入num参数时可以用? num代替?num,也就是num前加一个空格,这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。

    4.  利用这个特性,可以开始往里面写指令,这里先用scandir()函数查看根目录文件

    ? num=var_dump(scandir(chr(47)))
    scandir("路径")可以返回指定目录中的文件和目录的数组。
    "/"被过滤所以用chr(47)绕过
    var_dump将执行的结果输出。

     发现flagg文件。

    payload:

    ? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
    file_get_contents("文件路径")将指定文件读入字符串中
    用chr(ASCII码)指代/flagg
  • 相关阅读:
    vue项目本地调试,内网穿透
    EMQ开启mysql认证
    vsftpd配置安装
    express使用https
    vue实现图片的上传和删除
    Linux下获取java堆栈文件并进行分析
    kill -3 PID命令获取java应用堆栈信息
    Linux下的java虚拟机性能监控与故障处理命令
    k8s下的eureak服务注册失败(cannot execute request on any known server)解决
    MariaDB主从复制虚拟机实战
  • 原文地址:https://www.cnblogs.com/cmredkulaa/p/14538556.html
Copyright © 2011-2022 走看看