zoukankan      html  css  js  c++  java
  • 宽字节注入浅浅谈!

      今天要写的是宽字节注入,这章节写的很浅,浅到让我有点不想写下去了。不过每天总要留下点痕迹吧,生命的痕迹嘛。后期我会再去补。Ok,在这里先贴出我使用的代码。

      从代码(回帖在后面)中可以看出,这是字符型注入。想到数字型注入,大家的第一印象应该就是使用来进行闭合从而完成自己注入过程。但是在这里却不行,应为这里有一个addslashes函数,它会将我们输入的进行转义,变成。这样我们的语句就会变成xxx?id=’1’’了,就算我们在最后面加入了#进行注释。但也没办法闭合。无法完成,难道这个时候就没法闭合了吗?

      不,有一种特殊情况可以支持我们注入。那就是当我们的数据库编码为GBK时,可以支持我们正常注入。只需要我们在地址后面加一个%df,然后再加单引号ok了。为什么可以这样做呢?

    因为这时候的数据库编码为GBK

      在注入时大家通常都会看到自己输入的空格变成了%20。这是url转码后的值。我们的数据是转码完之后再放进数据库进行查询的。我们的输入的%df’#。首先会因为被转义变成%df\%27%27,因为url编码为%5cur编码为%23#%27。所以总的变成了%df%5c%27%23

           GB2312大家都不陌生吧?它是编码适用于汉字处理、汉字通信等系统之间的信息交换的。gb2312编码的取值范围,它的高位范围是0xA1~0xF7,低位范围是0xA1~0xFE,而%5c,是不在低位范围中的。所以,%5c根本不是gb2312中的编码,所以自然也是不会被吃掉的。

      而在GBk中他是属于编码范围的,又因为GBK是双字节编码的。所以它会和前面的%df组合在一起,变成%df%5c,这是汉字“連”。这时候%df%5c’%23%27变成了連’#所以它就逃出来了,这样前面也就闭合了。闭合完之后我们的操作就和之前的一样的。

      让我们尝试查看有多少个字段试试。

          id=1%df%27order%20by%203%23

      试试4个字段id=1%df%27order%20by%204%23

      证明是有3有字段。接下来的操作就和之前一样了。

      不过要注意的一点就是,我们这些操作为的是能让这个语句闭合,从而可以继续我们的操作。如果当我们的注入语句中出现库名需要用’xx’引起来时就会出现错误。无法引用这个库。这时候我们需要利用另外一种方法:嵌套查询。就是用其他的函数来引出我们所需要用的这个库或其他东西。如:select table_name from information_schema.tables where table_schema=’sql’ limit 0,1%23  这时’sql’(假设的数据库名)就不行了。我们需要将语句换成select table_name from information_schema.tables where table_schema=select database()) limit 0,1%23 这样就可以运行了。

    所以我们每学到一种方法就必须将它吃透。为什么要这样用,怎么用。这样才能慢慢变好。

      在这里贴一段困扰了我N分钟的代码,你们可以在自己那复制来测试。Select column_name from information_schema.columns where table_schema=(select databses()) and table_name=( select table_name from information_schema.tables where table_schema=(select database()) limit 0,1) limit 0,1

    Pass:坚持每日一更。完毕,凌晨了睡觉觉!

    <?php
    //连接数据库部分,注意使用了gbk编码
    $conn = mysql_connect('localhost', 'root', 'root') or die('bad!');
    mysql_query("SET NAMES 'gbk'");
    mysql_select_db('test', $conn) OR emMsg("连接数据库失败,未找到您填写的数据库");
    //执行sql语句
    $id = isset($_GET['id']) ? addslashes($_GET['id']) : 1;
    $sql = "SELECT * FROM news WHERE id='{$id}'";
    $result = mysql_query($sql, $conn) or die(mysql_error());
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="gbk" />
    <title>新闻</title>
    </head>
    <body>
    <?php
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    echo "<h2>{$row['title']}</h2><p>{$row['content']}<p> ";
    mysql_free_result($result);
    ?>
    </body>
    </html>

  • 相关阅读:
    ZOJ 1002 Fire Net
    Uva 12889 One-Two-Three
    URAL 1881 Long problem statement
    URAL 1880 Psych Up's Eigenvalues
    URAL 1877 Bicycle Codes
    URAL 1876 Centipede's Morning
    URAL 1873. GOV Chronicles
    Uva 839 Not so Mobile
    Uva 679 Dropping Balls
    An ac a day,keep wa away
  • 原文地址:https://www.cnblogs.com/DaShuai-PX/p/9589305.html
Copyright © 2011-2022 走看看