什么是sql盲注(sql盲注的原理)

互联网- 2023-08-07 00:39:48

SQL盲注 DVWA

各位老铁们,大家好,今天由我来为大家分享什么是sql盲注,以及sql盲注的解决办法的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

  1. 什么是sql盲注
  2. 什么是sql注入我们常见的提交方式有哪些
  3. sql盲注的条件
  4. sql自学建议

什么是sql盲注

SQL盲注是一种SQL注入漏洞,攻击者可以操纵SQL语句,应用会针对真假条件返回不同的值。但是攻击者无法检索查询结果。

由于SQL盲注漏洞非常耗时且需要向Web服务发送很多请求,因而要想利用该漏洞,就需要采用自动的技术。

SQL盲注是一种很常见的漏洞,但有时它非常细微,经验不丰富的攻击者可能会检测不到。

什么是sql注入我们常见的提交方式有哪些

什么是SQL注入(SQLi)?

SQL注入是一个网络安全漏洞,它使攻击者能够干扰应用程序对其数据库的查询。通常,它使攻击者可以查看他们通常无法检索的数据。这可能包括属于其他用户的数据,或者应用程序本身能够访问的任何其他数据。在许多情况下,攻击者可以修改或删除此数据,从而导致应用程序内容或行为的永久更改。

在某些情况下,攻击者可以升级SQL注入攻击以破坏基础服务器或其他后端基础结构,或者执行拒绝服务攻击

成功的SQL注入攻击有什么影响?

成功的SQL注入攻击可能导致未授权访问敏感数据,例如密码,信用卡详细信息或个人用户信息。近年来,许多引人注目的数据泄露是SQL注入攻击的结果,导致声誉受损和监管罚款。在某些情况下,攻击者可以获取组织系统的持久后门,从而导致长期的妥协,并且可能在很长一段时间内未被发现。

SQL注入示例

在不同情况下会出现各种SQL注入漏洞,攻击和技术。一些常见的SQL注入示例包括:

检索隐藏的数据,您可以在其中修改SQL查询以返回其他结果。

颠覆应用程序逻辑,您可以在其中更改查询以干扰应用程序的逻辑。

UNION攻击,您可以在其中从不同的数据库表中检索数据。

检查数据库,您可以在其中提取有关数据库版本和结构的信息。

盲SQL注入,您控制的查询结果不会在应用程序的响应中返回。

检索隐藏数据

考虑一个显示不同类别产品的购物应用程序。当用户单击“礼物”类别时,其浏览器将请求URL:

https://insecure-website.com/products?category=Gifts

这使应用程序进行SQL查询,以从数据库中检索相关产品的详细信息:

SELECT*FROMproductsWHEREcategory='Gifts'ANDreleased=1

此SQL查询要求数据库返回:

所有详细信息(*)

从产品表

类别是礼物

并发布为1。

该限制released=1用于隐藏未发布的产品。对于未发布的产品,大概是released=0。

该应用程序未对SQL注入攻击实施任何防御措施,因此攻击者可以构建如下攻击:

https://insecure-website.com/products?category=Gifts'--

这将导致SQL查询:

SELECT*FROMproductsWHEREcategory='Gifts'--'ANDreleased=1

此处的关键是,双破折号序列--是SQL中的注释指示符,意味着查询的其余部分将被解释为注释。这样可以有效删除查询的其余部分,因此不再包含ANDreleased=1。这意味着将显示所有产品,包括未发布的产品。

更进一步,攻击者可以使应用程序显示任何类别的所有产品,包括他们不知道的类别:

https://insecure-website.com/products?category=Gifts'+OR+1=1--

这将导致SQL查询:

SELECT*FROMproductsWHEREcategory='Gifts'OR1=1--'ANDreleased=1

修改后的查询将返回类别为Gifts或1等于1的1=1所有项目。由于始终为true,因此查询将返回所有项目。

颠覆应用逻辑

考虑一个允许用户使用用户名和密码登录的应用程序。如果用户提交用户名wiener和密码bluecheese,则应用程序将通过执行以下SQL查询来检查凭据:

SELECT*FROMusersWHEREusername='wiener'ANDpassword='bluecheese'

如果查询返回用户的详细信息,则登录成功。否则,它将被拒绝。

在这里,攻击者可以简单地使用SQL注释序列--从WHERE查询子句中删除密码检查,而无需密码即可以任何用户身份登录。例如,提交用户名administrator'--和空白密码将导致以下查询:

SELECT*FROMusersWHEREusername='administrator'--'ANDpassword=''

该查询返回用户名为的用户,administrator并以该用户身份成功登录攻击者。

从其他数据库表检索数据

如果在应用程序的响应中返回了SQL查询的结果,则攻击者可以利用SQL注入漏洞从数据库中的其他表中检索数据。这是使用UNION关键字完成的,该关键字使您可以执行附加SELECT查询并将结果附加到原始查询中。

例如,如果应用程序执行以下包含用户输入“Gifts”的查询:

SELECTname,descriptionFROMproductsWHEREcategory='Gifts'

然后攻击者可以提交输入:

'UNIONSELECTusername,passwordFROMusers--

这将导致应用程序返回所有用户名和密码以及产品名称和描述。

检查数据库

在初步识别出SQL注入漏洞之后,获取有关数据库本身的一些信息通常非常有用。这些信息通常可以为进一步开发铺平道路。

您可以查询数据库的版本详细信息。完成此操作的方式取决于数据库类型,因此您可以从任何一种技术推断出数据库类型。例如,在Oracle上,您可以执行:

SELECT*FROMv$version

您还可以确定存在哪些数据库表以及它们包含哪些列。例如,在大多数数据库上,您可以执行以下查询以列出表:

SELECT*FROMinformation_schema.tables

二阶SQL注入

一阶SQL注入出现在应用程序从HTTP请求获取用户输入的情况下,并且在处理该请求的过程中,以不安全的方式将输入合并到SQL查询中。

在二阶SQL注入(也称为存储SQL注入)中,应用程序从HTTP请求中获取用户输入并将其存储以备将来使用。这通常是通过将输入放入数据库来完成的,但是在存储数据时不会出现漏洞。稍后,当处理其他HTTP请求时,应用程序将以不安全的方式检索存储的数据并将其合并到SQL查询中。

在开发人员意识到SQL注入漏洞并因此安全地处理输入到数据库的初始放置的情况下,通常会发生二阶SQL注入。以后处理数据时,由于先前已将其安全地放置到数据库中,因此认为该数据是安全的。此时,由于开发人员错误地认为数据是可信的,因此以不安全的方式处理数据。

总的来说,我们通过使用参数化查询(也称为预处理语句)而不是查询中的字符串连接,可以防止大多数SQL注入实例。

sql盲注的条件

一、盲注的基本条件

1、用户能够控制输入

2、原程序要执行的代码拼接了用户输入的数据。

二、盲注的类型

1、基于布尔型:返回true或false用户名猜对了,立马回显。猜错了,报错。

2、基于时间盲注:

sleep()延时盲注

ength()函数:返回字符串的长度

substr(str,pos,num):截取指定位置指定长度的字符串

mid(str,pos,num):截取指定位置指定长度的字符串

ascii()查询ascii码中对应的值

if判断语句。1、猜数据库长度(第一个语句成立的话,执行第二个语句,否则执行第三个语句2、猜数据库名。

sql自学建议

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。你需要了解以下知识:

SQL注入漏洞原理SQL注入漏洞对于数据安全的影响SQL注入漏洞的方法常见数据库的SQL查询语法MSSQL,MYSQL,ORACLE数据库的注入方法SQL注入漏洞的类型:数字型注入、字符型注入、搜索注入、盲注(sleep注入)、Sqlmap使用、宽字节注入

SQL注入漏洞修复和防范方法一些SQL注入漏洞检测工具的使用方法

对应的靶场练习,推荐:https://www.hetianlab.com/cour.do?w=1&c=C9d6c0ca797abec2017041916131700001

关于本次什么是sql盲注和sql盲注的解决办法的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

SQL注入之盲注
  • 声明:本文内容来自互联网不代表本站观点,转载请注明出处:bk.66688815.com/11/87434.html
上一篇:人真的能永远不犯错吗(人真的能永远不犯错吗为什么)
下一篇:以前没用过苹果手机,想买iPhone11有什么优缺点(苹果手机11还值得买吗)
相关文章
返回顶部小火箭