Web 安全系列文章--SQL注入判断
作者:haipaopao 日期:2009-08-28
Web 安全系列文章--SQL注入判断
上文介绍了SQL注入的原理,我们知道SQL注入其实是注入的一种,那么针对SQL注入,我们应该怎么样子去检测呢,怎么样子才能知道一个页面是否存在注入呢?本文将详细讲解注入的判断方法。
首先从最经典1=1 和1=2开始。
假设有以下一个页面:http://www.mytest.com/showdetail.asp?id=49
那么我们按照下面的3步进行测试:
① http://www.mytest.com/showdetail.asp?id=49
② http://www.mytest.com/showdetail.asp?id=49 and 1=1
③ http://www.mytest.com/showdetail.asp?id=49 and 1=2
这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:
可以注入的表现:
① 正常显示(这是必然的,不然就是程序有错误了)
② 正常显示,内容基本与①相同
③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
为什么呢?SQL注入的本质是程序没有对用户的输入进行判断,导致了用户在提交数据的时候可以吧构造的特殊的数据带入了数据库中进行处理,从而导致了某些黑客通过构造一些特殊的SQL进行恶意的操作。
上面是基本的整数型的注入,当然对于其它类型的数据类型来说,使用同样的方法进行判断即可,下面是其他类型的注入检测方法。
对于字符型的注入检测语句:1'='1' 和 1'='2'
上述2类的注入的SQL原理代码在上节文章中已经有详细讲解,就不在详细介绍了。
对于搜索型的注入检测语句:%'and 1=1 and '%'=' 和 %'and 1=2 and '%'='
可能有部分人不知道搜索型注入是怎么回事,我们来这样分析。
我们知道一般搜索代码是这么写的:
Select * from 表名 where 字段 like ’%关键字%’
这样就造成了对关键字前后的所有匹配(%是用来全部匹配的)
这里如果关键字没有过滤的话,就可以这样来构造:
关键字=’ and [查询条件] and ‘%25’=’
这样查询就变成
select * from 表名 where 字段 like '%' and 1=1 and '%'='%'
那么这就是搜索型的SQL注入。
基本上上面所讲就是SQL注入的所有的判断方法了。但是这只是最基本的原理。要想能够进一步的使用SQL注入,那么请看下篇文章。
评论: 0 | 引用: 0 | 查看次数: 321
发表评论
上一篇
下一篇


文章来自:
Tags:
相关日志:
