zoukankan      html  css  js  c++  java
  • preg_replace引发的phpmyadmin(4.3.0-4.6.2)命令执行漏洞

    编辑器坏了 (: 

    今天看到这个phpmyadmin的代码执行,https://www.waitalone.cn/phpmyadmin-preg_replace-rce.html

    记录一下:preg_replace()函数
    http://php.net/manual/zh/function.preg-replace.php
    php 7.0.0不再支持 /e修饰符。 请用 preg_replace_callback() 代替。
    php 5.5.0/e 修饰符已经被弃用了。使用 preg_replace_callback() 代替。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息。
    

      

     
    如果是 preg_replace("/".$find."/",$_GET["a"],$fromsqldata);     
    没有/e修饰符,第一次参数可控,那么在第一个参数进入数据库中又从数据库中取出的话,就能进行00截断。
    看完漏洞以后就在想如果$find参数是用$_GET来获取的呢,有办法进行命令执行吗?
    $find=$_GET['find'];
    $fromsqldata = '0/e';
    echo preg_replace("/".$find."/",$_GET["a"],$fromsqldata);
    

      

    感觉应该是没有的,因为php5.5.0    /e 修饰符就无效了,而5.5以下的GPC默认是开启的。对于%00会自动进行过滤,所以没法进行命令执行。
    或者调用stripslashes()函数来删除GPC带来的转义。
    $find=stripslashes($_GET['find']);
    $fromsqldata = '0/e';
    echo preg_replace("/".$find."/",$_GET["a"],$fromsqldata);
    

      

  • 相关阅读:
    django关闭调试信息,打开内置错误视图
    django 配置URLconf和获取值
    django模版中配置和使用静态文件方法
    django的模型类管理器-----------数据库操作的封装
    美团校招的算法题:灯泡游戏
    ccTouchBegan
    特效effects(二)
    特效effects
    CCProgressTo和CCProgressTimer
    TransitionsTest
  • 原文地址:https://www.cnblogs.com/yangxiaodi/p/7066187.html
Copyright © 2011-2022 走看看