SQL注入攻击的时候,为什么要在URL后面加上abc.asp?p=YY',为什么多要个单引号?
2个回答
展开全部
有些人喜欢直接拼凑SQL语句
比如你说的这个。可以这么写
select * from table1 where column='"& Request.QueryString("p") &"'
这样你加个单引号,就可以跟前面的单引号形成一组,后面再加点其它的语句,也就可以一并执行了
比如你说的这个。可以这么写
select * from table1 where column='"& Request.QueryString("p") &"'
这样你加个单引号,就可以跟前面的单引号形成一组,后面再加点其它的语句,也就可以一并执行了
追问
按你的意思,后台服务器会如下请求数据库:
select * from table1 where colum=' "&YY' &" '
对不?
可为什么这样能够测试SQL注入漏洞呢?
追答
本来它得到的数据是
select * from table1 where column='YY'
如果你多加了一个单引号,就变成了
select * from table1 where column='YY'' 注意后面是两个单引号。
这样的语句是会报错的。如果页面报错了。说明对于接收的参数是没有做过滤的。也就是存在注入
展开全部
SQL注入攻击的通常是程序中进行sql语句拼接
中间加单引号,是对SQL语句中的单引号进行转义
中间加单引号,是对SQL语句中的单引号进行转义
追问
就为了形成如下SQL语句嘛?
select * from table1 where column=yy'吗?
我还是不很理解。能劳烦举个例子吗?
追答
select * from [User] where username='"+name+"' and password='"+pwd+"'";
假设name的值为student‘;--’,password任意
则,生成的sql为:
select * from [User] where username=‘student';--‘’and password=‘任意’;
这样就屏蔽了password
解决SQL注入的方法是不要用程序拼接SQL,而是通过预编译sql语句,通过参数传递。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询