TOP10_SQL

本文详细介绍SQL注入攻击原理,包括带内注入的测试方法与绕过技巧,并提供了OWASP靶机实例解析。涵盖SQL语句构造、数据库类型识别及常用防御手段的破解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天给大家详细的总结一些SQL如何的常用原理,方法,和一些演示和工具的使用。

  最新的OWASP Testing Guide 4.0把SQL注入分为以下三类:带内,带外,盲注,所以文章的大体思路也是这样子的。

  一 带内注入

  所谓带内注入就是提起数据会会使用相同的channel返回,所以这种注入如果攻击成功效果明显,直接会在网页上显示。当然首先你的构建一个正确的SQL语句。关于SQL语句的构造,不是本文讨论的内容,所以默认大家有这方面的基础。

  接下来我们要明白如何测试,关于这个问题。我们首先回答web app什么时候和数据交互,因为那些地方才是我们测试的切入点。常见交互地点比如说,认证表单,搜索引擎,电商网站,http header,隐藏的域啊等。当然你可以用’或者:符号来进行初步的判定,但我相信,这样的漏洞很少了。毕竟开发者这点意识还是有的。你可能看到的是一个500或者自定义的错误表单。这个时候就要利别的技术。比如盲注等。

  接下来我们看一下owwasp提供靶机的源代码,结合源代码的我们分析一下如何进行带内注入。
  这里写图片描述

如你所见,不同的图,对应不同的难度。图一,直接没有过滤用户输入,直接拿来使用。图二,利用PHP的mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。图三,首先利用striplashes删除反斜杠,在进行转移。含义就是你可以利用反斜杠绕过图二的过滤。具体我们分别来看:

  图一:输入 admin’ or ’ 1=1– 能够成功绕过

  图二:绕过图二的防御可以利用编码 0x27单引号结合 0x27 union select 1,table_name from INFORMATION_SCHEMA.tables –。应为单引号过滤了,还有INFORMATION_SCHEMA是每个mysql默认数据库。

  图三:利用上面的方法也可以绕过,但是由于is_numeric函数存在,必须把整个字符串转成十六进制码,注意空格也要转化,因为is_numeric只能过数字或者数字串。

有些过滤器试图过滤:SQL关键字,单引号空白符等是可以绕过的:

  1 关键字大小写变种

  2 不用空白符利用内联注释 union =union//=//un//ion//
  3 url编码 Unicode编码
  4 使用动态查询
  5 使用空字节 用来避开原生输入过滤器
  7 利用剥离后的表达式
  8 利通截断

  在实际测试中,识别数据库的类型很重要,常用的方法有

  1 查看错误的返回

  2 利用社会工程学

  3 利用工具扫描 nmap -A

  对于不用的测试点和数据库类型输入的数据类型也不一样的

  1 MYSQL

    a) 数字类型

还未完结。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值