1、数字型注入
当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。
测试步骤:
(1) 加单引号,URL:www.text.com/text.php?id=3’
对应的sql:select * from table where id=3’ 这时sql语句出错,不符合sql语法,让数据库系统报错,如果没报错就说明 ‘ 被过滤了,这样不存在注入的可能或者是字符型注入。
(2) 加and 1=1 ,URL:www.text.com/text.php?id=3 and 1=1
对应的sql:select * from table where id=3’ and 1=1 语句执行正常,与原始页面如任何差异;
(3) 加and 1=2,URL:www.text.com/text.php?id=3 and 1=2
对应的sql:select * from table where id=3 and 1=2 语句可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异
and 1=1 是正确语句 可以返回正确页面 ,而and 1=2 为错误语句 不少网站设计时利用参数过滤了 而没过滤的 直接把值赋给变量 就形成了注入漏洞
如果满足以上三点,则可以判断该URL存在数字型注入。
2、字符型注入
如果在以上第(3)步,发现语句正常执行,且原始网页没有变化。那么可以排除是数字型的注入。当然也不能确定是字符型注入。
(1)若 输入:1' and '1'='1 成功:
(2)输入:1' and '1'='2,失败,没有查出东西,说明是字符型的注入:
3、手工注入思路
自动化的注入神器sqlmap固然好用,但还是要掌握一些手工注入的思路,下面简要介绍手工注入(非盲注)的步骤。
1.判断是否存在注入,注入是字符型还是数字型
2.猜解SQL查询语句中的字段数
3.确定显示的字段顺序
4.获取当前数据库
5.获取数据