我看网上有两种,能不能详细解释一下二者是什么关系,每个是什么意思?第一种:当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
select * from 表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。
①xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了
select * from 表名 where 字段=YY’,abc.asp运行异常;
②xxx.xxx.xxx/abc.asp?p=YY'and'1'='1,abc.asp运行正常,而且与xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③xxx.xxx.xxx/abc.asp?p=YY'and'1'='2, abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。” 第二种:当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:
select * from 表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。
①xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了
select * from 表名 where 字段=YY’,abc.asp运行异常;
②xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='1', abc.asp运行正常,而且与xxx.xxx.xxx/abc.asp?p=YY运行结果相同;
③xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='2', abc.asp运行异常;
如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。”
你说的这两种是一样的,就看第一种就行。我给你逐步解释一下
第一步在url后面添加了‘后sql语句可以正常运行说明asp代码没有设置屏蔽’的机制;
第二步在url最后添加了'and'1'='1后select语句就编程了
select * from 表名 where 字段='YY'and'1'='1'
如果这样也能正常运行则证明asp代码没有屏蔽条件插入的机制;
第二步和第一步其实没有本质的区别,只是进一步确认;
第三部url后面追加的编程了1=2,同第二部一个原理,只不过这次测试的是asp代码没有屏蔽掉数据库报错信息,而黑客可以通过这些信息得到很多系统信息以方便下一步的动作。
综上三步,当然可以知道这里可以作为入住点。LZ应该能明白了吧
追问判断方法里面第一步不是会运行异常吗?这是说明有屏蔽'的机制吗?这和第二步不矛盾吗?
追答打错了一个字。。纠正一下,第一步是异常。
是没有屏蔽啊,你想啊,有的话它就不报错了,就不会异常了。
而第二部怎么会矛盾呢,正式因为它没有设置屏蔽机制所以第二步才有可能正常运行啊。如果有屏蔽机制的话第二步也就异常了,因为第一步加一个'后select语句就语法错误了,而第二步加了and后语法是正确的。