第18讲SQL注入绕过与修复56课件.pptxVIP

  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文档。上传文档
查看更多

第18讲SQL注入绕过与修复任毅

引言为安全起见,程序开发人员会对输入的字符进行过滤,以防止SQL注入攻击,但是过滤设置不当时,仍然会造成漏洞。通过学习绕过方法,明确应从多方面对输入的字符进行过虑。

小测试有哪些绕过方法?

学习目标1、能描述注入绕过的常见方法,能描述防范SQL注入方法2、能完成SQL注入绕过相关测试工作

一、空格绕过根据应用程序的过滤规则,程序员有可能将空格加入黑名单但是空格存在多种绕过方式,常见的包括用/**/、制表符、换行符、括号、反引号等代替空格。两个空格代替一个空格,用Tab代替空格,%a0代替空格。%20%09%0a%0b%0c%0d%a0%00/**//*!*/如:select*fromuserswhereid=1/*!union*//*!select*/1,2,3,4;%09TAB键(水平)%0a新建一行%0bTAB键(垂直)%0c新的一页%0dreturn功能%a0空格

一、空格绕过使用/**/代替空格

一、空格绕过--sqli-labs第1关(Linux平台)(1)%09代替空格42/sqli-labs/Less-1/?id=999%09union%09select%091,database(),version()%09--+

一、空格绕过--sqli-labs第1关(Linux平台)(2)%0a代替空格(3)/**/代替空格

一、空格绕过用Pakichu平台完成,字符型注入。当输入admin时,报用户名不存在,如下图所示:由于提示输入用户名,用户名肯定是字符串。

一、空格绕过(1)判断闭合符号使用admin进行闭合测试,报错如下:使用admin闭合失败(很可能闭合字符就是,但是人为加一个后,多出了一个)。

一、空格绕过使用admin进行闭合测试未报错。结果如下,有可能是将双引号当成用户名的一部分了。

一、空格绕过当输入admin#时,未报错,如下:由上判断,应该是使用闭合的。

一、空格绕过(2)判断输出列数根据前面数字型注入中,知道共6名用户,id号为1的用户为vince,当Payload为:vinceorderby2#时正常输出,而当Payload为vinceorderby3#时报错,如下所示,可见输出为2列。

一、空格绕过(3)输出数据库名Payload为:vinceunionselectdatabase(),version()#输出结果如下:

一、空格绕过(4)使用制表符(其URL编码为%09)代替空格一样能够正常注入。

大小写绕过程序员通常会针对恶意关键词设置黑名单,如果存在恶意关键词就会退出但是可能存在过滤不完整或者是只过滤小写或者大写的情况,没有针对大小写组合进行过滤,导致可以通过大小写混写payload的方式来绕过过滤。例如and1=1转成AND1=1或AnD1=1select*fromuserswhereid=1UNIONSELECT1,2,3,4;select*fromuserswhereid=1UniONSelECT1,2,3,4;过滤空格时可以用%09代替空格。

大小写绕过例如:sqli-labs第27关,过滤如下:

大小写绕过可使用大小写加%09代替空格进行绕过。输出有3列,由于过滤了--和#,所以尝试payload为:?id=999%09unIoN%09sElEct%091,database(),version()发现报错如下(是因为后面的单引号未注释掉):

大小写绕过还是引号的闭合存在问题。修改源码,输出SQL语句,

大小写绕过在客户端仍然使用?id=999%09unIoN%09sElEct%091,database(),version()进行测试,发现输出的SQL语句为:这里多了一个单引号,可见是闭合问题。尝试payload为(在最后加一个单引号):?id=999%09unIoN%09sElEct%091,database(),version()

大小写绕过得到以下结果:将以上语句复制到MySQL中运行,(limit前面多了一对单引号),可见不会报错,如下所示:

双写关键字绕过程序员可能会针对恶意关键词设置黑名单,如果存在恶意关键词就会替换为空字符但是没有多次匹配判断,就可以通过双写字符串的方式来绕过过滤。例如:id=-1UNIunionONSeLselectECT1,2,3--+过滤了union、select后,到数据库里执行会变成id=-1UNIONSeLECT1,2,3--+从而绕过注入拦截。sqli-labs第27关,过滤union和select两个关键字,可使用

文档评论(0)

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

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

1亿VIP精品文档

相关文档