1、SQL注入漏洞

1、SQL注入漏洞

1.1、SQL注入漏洞产生原因及危害

SQL注入漏洞是指攻击者通过浏览器或者其他客户端将恶意SQL语句插入到网站参数中,而网站应用程序未对其进行过滤,将恶意SQL语句带入数据库使恶意SQL语句得以执行,从而使攻击者通过数据库获取敏感信息或者执行其他恶意操作。
SQL注入漏洞可能会造成服务器的数据库信息泄露、数据被窃取、网页被篡改等!!

1.2、SQL注入分类

1、数字型注入
数字型注入就是注入点的数据类型是数字型,没有用单引号引起来。数字型注入的典型代码如下:

$id = $_GET[‘id’];
$sql = “SELECT * FROM users WHERE id= $id LIMIT 0,1”;
$result=mysql_query( $sql );
$row=mysql_fetch_arry( $result );

在WHERE id = $id这个SQL语句的子句中, $id变量没有用单引号或者双引号引起来,而是直接拼接到了后面,这样注入就是典型的数字型注入。

判断数字型注入的方法如下:

(1)输入单引号,不正常返回。
如果用户提交index.php?id=1’,那么后面的SQL语句就变为SELECT * FROM users WHERE id =1 ’ LIMIT 0,1,SQL语句本身存在语法错误,会有不正常的结果返回。

(2)输入and 1=1,正常返回。
如果用户提交index.php?id=1 and 1=1 ,那么后面的SQL语句就变为SELECT * FROM users WHERE id =1 and 1=1 LIMIT 0,1会有正常结果返回。因为1=1这个等式恒成立!

(3)输入and 1=2,不正常返回
如果用户提交index.php?id=1 and 1=2 ,那么后面的SQL语句就变为SELECT * FROM users WHERE id =1 and 1=2 LIMIT 0,1会有不正常结果返回。
数字型注入的注入点主要通过上面3个语句来判断,如果输入的返回结果与上面相符,说明测试语句中的恶意SQL语句被带入数据库中并且成功执行,那么可能存在数字型注入。
2、字符型注入
字符型注入就是注入点的数据是字符型。字符型注入与数字型注入的区别就是字符型注入要用一对单引号引起来。典型代码如下:

$id = $_GET[‘id’];
$sql = “SELECT * FROM users WHERE id= ’ $id ’ LIMIT 0,1”;
$result=mysql_query( $sql );
$row=mysql_fetch_arry( $result );

判断字符型注入的方法如下:

(1)输入单引号,不正常返回。
如果用户提交index.php?id=1’,那么后面的SQL语句就变为SELECT * FROM users WHERE id =1 ’ LIMIT 0,1,SQL语句本身存在语法错误,会有不正常的结果返回。

(2)输入’and ‘1’=‘1,正常返回。
如果用户提交index.php?id=1 ’and ‘1’=‘1,那么后面的SQL语句就变为SELECT * FROM users WHERE id ='1 'and ‘1’='1 'LIMIT 0,1会有正常结果返回。

(3)输入’and ‘1’='2,不正常返回
如果用户提交index.php?'and ‘1’='2 ,

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值