sql注入漏洞攻击流程
1、探测方法
一般来说,SQL注入一般存在于形如:http://xxx.xxx.xxx/abc.asp?id=XX等带有参数的 ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页并且该网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,没有进行必要的字符过滤,存在SQL注入的可能性就非常大。
在探测过程中,需要分析服务器返回的详细错误信息。在默认情况下,浏览器仅显示“HTTP 500服务器错误”,并不显示详细的错误信息。因此,需要调整浏览器的配置。在IE浏览器中选择“工具”→“Internet选项”命令,弹出“Inter net选项”对话框,选择“高级”选项卡,把“显示友好 HTTP 错误信息”前面的勾去掉。
2、注入类型判断
A.整型参数的判断
当输入的参数YY为整型时,通常abc.asp中SQL语句大致如下:
select * from 表名 where 字段=YY
所以可以用以下步骤测试SQL注入是否存在。
(1)在URL链接中附加一个单引号,即
http://xxx.xxx.xxx/abc.asp?p=YY’,
此时abc.ASP 中的SQL语句变成了
select * from 表名 where 字段=YY’。
测试结果为abc.asp运行异常;
(2)在URL链接中附加字符串“and 1=1”即
http://xxx.xxx.xxx/abc.asp?p=YY and 1=1。
测试结果为abc.asp运行正常,而且与 http://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
(3)在URL链接中附加字符串“and 1=2”即
http://xxx.xxx.xxx/abc.asp?p=YYand1=2。
测试结果为abc.asp运行异常。
如果以上三种情况全部满足,abc.asp中一定存在SQL注入漏洞。
B.字符串型参数的判断
当输入的参数YY为字符串时,通常abc.asp中SQL语句大致如下:
select * from 表名 where 字段='YY'
所以可以用以下步骤测试SQL注入是否存在。
(1)在URL链接中附加一个单引号,即
http://xxx.xxx.xxx/abc.asp?p=YY’
此 时 abc.ASP中的SQL语句变成了
select * from 表名 where 字段=YY’
测试结果为abc.asp运行异常;
(2)在URL链接中附加字符串“’and ‘1’=‘1”即
http://xxx.xxx.xxx/abc.asp?p=YY ’and ‘1’=‘1。
测试结果为abc.asp运行正常,而且与 http://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
(3)在URL链接中附加字符串
’and ‘1’=‘2”即 http://xxx.xxx.xxx/abc.asp?p=YY ’ and ‘1’=‘2
测试结果为abc.asp运行异常。如果以上三种情况全部满足,abc.asp中一定存在sql注入