Day2-01SQL注入漏洞基础.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL注入渗透测试框架分两大模块,左边模块是注入漏洞探测阶段,右边是SQL注入利用阶段。左边的模块覆盖Web应用程序的所有可测试点并对可测试点进行探测,确定每一个可测试点是否是一个可注入点,发现可注入点以后,再探测清楚数据库的基本信息。获取的信息为右边的漏洞利用提供依据,左边模块从左到右是一个探测过程。右边模块是在左边模块的基础上发起的实际攻击,每一个攻击都为完成不同的目的,各自独立。从这个框架中我们能清楚的了解SQL注入漏洞的探测阶段才是渗透测试的重点,无论对攻击者还是渗透测试人员都是如此,发现了漏洞才能利用漏洞。 当然可测试点远不止这几种,http请求报文头中的任何消息报头的值都可以作为可测试点,如Referer消息报头等,但通常情况下我们只需要考虑常见的那三种可测试点即可(因为请求消息报头一般不会被应用程序用于操作数据库) 1.依据SQL语法错误判定通常指的就是单引号测试,单引号是SQL语句字符串的闭合符号,如果在SQL语句中多了或少了一个单引号就会出现语法错误,根据此语法错误就可以判定应用程序SQL语句存在拼串行为,也即存在SQL注入漏洞。 2.依据SQL语句执行的差异判定最经典就是“and 1=1”与“and 1=2”测试。“and”在SQL语句中是“逻辑与”的意思,“1=1”是永真,“1=2”是永假,所以如果这两条探测语句得以执行,应用程序返回的页面是存在差异的,也正是根据页面返回的差异,我们才得以判断探测语句得以执行,也即应用程序存在SQL注入漏洞。差异是我们判定是否存在SQL注入漏洞的标准,然而产生差异有很多种方法,算术、逻辑、比较、连接四类操作符也可以构造出很多产生差异的语句。在基础部分我们不做介绍,下午的实验阶段再详细说明。 这里我做了一个比喻,意思就是虽然找到了注入点,但我们还没有获取到实际的好处,在获取实际好处的路上还要一步一个脚印。探测数据库类型就是找到注入点后迈出的第一步。以ORACLE数据库为例,利用其特有的一些信息包括dual数据表、oracle错误、oralce版本信息、oracle拼串操作、oracle特有函数进行探测。 MSSQL sysdatabases sysobjects syscolumns表 MYSQL information_schema元数据库 ORACLE user_* all_* dba_* 基本信息探测中最重要的就是枚举数据库模式,有几个数据库,每个数据库有几个数据表,每个数据表有几个数据列,探测清楚了可以用于获取数据。 如果SQL注入渗透测试的目的就是获取敏感数据,那么进行到这一步就可以收工了。 MYSQL的LOAD DATA INFILE和LOAD_FILE函数必须拥有FILE和CREATE TABLE权限,SELECT..INTO DUMPFILE/OUTFILE需要FILE、INSERT、UPDATE、CREATE TABLE权限。 MSSQL需要有sysadmin权限。 ORALCE的utl_file包需要execute权限。 “盲注”前面已经介绍了,是指不能从HTTP请求返回的响应中直接提取想要的数据,但是可以利用多个请求响应的细微差别间接推断出数据库数据的注入技术。“盲注”是相对于“常规注入”的。但它的目的也是爆取数据库数据,它也离不开SQL注入攻击框架的指导。“收集应用程序可测试点”、“确定可测试点是否是可注入点”、“数据库类型探测”、“数据库基本信息探测”、“爆取数据库数据”依旧是不可缺少的步骤。为什么把盲注入单独拿出来介绍呢?这是因为盲注入有一些特殊的方法,需要掌握,下面我以ORACLE为例进行介绍。 首先介绍一下sys_context函数。sys_context函数是Oracle提供的一个获取环境上下文信息的预定义函数,该函数用来返回一个指定namespace下的parameter值,该函数可以在SQL和PL/SQL语言中使用。 我们知道一般情况下数据库的用户名、表名、列名等都是由“a-z”26个英文小写字母、“A-Z”26个英文大写字母、“0-9”10个数字以及下划线“_”共63个字母组成。因此我们可以利用Oracle的“length”函数推断出用户名、表名、列名等的长度,然后利用“substr”函数构造一个可能是真也可能是假的语句猜测用户名、表名、列名等每个字母值 ,如果字段值也是以这63个字母存储,我们也可以推断出每个字段的每个字母值。 二分法推断技术是对一般推断技术相对效率上的改进,它不需要像一般推断技术那样搜索整个字母表,它利用Oracle的“ascii”函数玩一个8问题游戏来不断的将搜索空间分为两个部分,直到识别出该字节的值为止。因为一个字节可包含2的8次方=256种值,所以可以通过log2256=8个请求来确定该值。假设我们关

文档评论(0)

nuvem + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档