SQL注入是因为开发者没有过滤GET/POST的参数导致参数传入mysql语句拼接成注入语句导致.
网上很多作者使用and 1=1 and 1=2来检测是否可以注入.
例如http://xxxxxx.com/ProductShow.asp?articleid=143(详细地址不透漏.)
ProductShow.asp用于显示指定的文章id的文章内容,其文件内容可能是:
代码语言:javascript复制<%
id=Request.QueryString("id")
select * from article where id=id
%>
正常用户访问生成的SQL语句:
代码语言:javascript复制select * from article where id=143
检测注入生成SQL语句:
代码语言:javascript复制select * from article where id=143 and 1=1 [正常访问]
select * from article where id=143 and 1=2 [出错或者没有查询到文章]
为什么我们说and 1=1正常 1=2出错 就可能存在注入,因为只要没有开发者没有对参数过滤我们的SQL拼接执行了就是可能存在注入