过滤单引号后是否sql注入就无解了

不能。首先,你要明白SQL注入的原因很多,比如:使用了字符串拼接为sql,java/php初学者我看见过许多这样写的。。权限配置错误,比如,本来应该只有read的,你给了他write.信任别人给出的数据!切记:你不要相信任何人,包括你自己。以第一种情况为例子:sql = "select * from table1 where id="+id;这里的id可能可以填写为1;drop tables table1;这sql没错撒?但是被drop了。。当然,这如果权限配置为不能删除表还好。不然。。以上只是随便举个例子,想说明的是没有单引号依旧可以注入。对于技术实现来说,维基百科已经给出了例子:SQL injection涉及到具体的hack方法你可以参见SQL注入攻击与防御(第2版) (豆瓣)这本书对此有具体的例子。反正我看完之后觉得还不错。
■网友
2018-03-23更新:
感谢评论区的大牛给出了一种在"同一语句中对多个字符串参数的值进行直接引用查询"时绕过的姿势。
======
我也没想到有效的绕过方案, 网上搜了一堆, 那些说能的人很多都是无视sql语句, 强行说能, 然后推荐书. 没有一个简单粗暴的给出绕过姿势的。

■网友
【过滤单引号后是否sql注入就无解了】 攻击方账号输入 1\\ 密码输入or 1=1 --+ ,最后拼接出来的语句是select from xxx where id=\u0026#39;1\\\u0026#39; and pw=\u0026#39;or 1=1--+\u0026#39; 其中\\将\u0026#39;转义,id的值就变为(1\u0026#39; and pw=),后边跟一个or 1=1返回的逻辑为true就可以进行SQL注入了,所以最好还是采用预编译的方式进行SQL注入

■网友
no,过滤了单引号它只是没爆错sql语句,但还可以用判断语句来进行注入。


    推荐阅读