首页 >> 网络安全 >>渗透测试 >> 什么是SQL注入
详细内容

什么是SQL注入

SQL注入

在本节中,我们将解释什么是SQL注入,描述一些常见示例,解释如何查找和利用各种SQL注入漏洞以及总结如何防止SQL注入。


什么是SQL注入(SQLi)?

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

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

QL注入类型描述
带内SQLi(经典SQLi)带内SQL注入是SQL注入攻击中最常见和最容易利用的。当攻击者能够使用相同的通信通道发起攻击并收集结果时,就会发生带内SQL注入。带内SQL注入的两种最常见类型是基于错误的SQLi和基于联合的SQLi。
基于错误的SQLi基于错误的SQLi是一种带内SQL注入技术,它依赖于数据库服务器抛出的错误消息来获取有关数据库结构的信息。在某些情况下,仅基于错误的SQL注入足以使攻击者枚举整个数据库。
基于联合的SQLi基于联合的SQLi是一种带内SQL注入技术,它利用UNION SQL运算符将两个或多个SELECT语句的结果组合为一个结果,然后将其作为HTTP响应的一部分返回。
推理SQLi(盲SQLi)不同于带内SQLi,推论性SQL注入可能需要更长的时间才能被攻击者利用,但是,它与任何其他形式的SQL注入一样危险。在推断性SQLi攻击中,实际上没有数据通过Web应用程序传输,并且攻击者无法看到带内攻击的结果(这就是为什么这种攻击通常称为“盲SQL注入攻击”的原因) 。相反,攻击者能够通过发送有效载荷,观察Web应用程序的响应以及数据库服务器的最终行为来重建数据库结构。推理SQL注入的两种类型是基于盲布尔的SQLi和基于盲时间的SQLi。
基于布尔(基于内容)的盲SQLi基于布尔的SQL注入是一种推论性SQL注入技术,该技术依赖于向数据库发送SQL查询,该查询强制应用程序根据查询返回的是TRUE还是FALSE结果返回不同的结果。根据结果,HTTP响应中的内容将更改或保持不变。即使没有从数据库返回任何数据,这也使攻击者可以推断使用的有效载荷返回的是true还是false。
基于时间的盲SQLi基于时间的SQL注入是一种推论性的SQL注入技术,该技术依赖于向数据库发送SQL查询,该查询强制数据库在响应之前等待指定的时间(以秒为单位)。响应时间将向攻击者指示查询结果是TRUE还是FALSE。根据结果,HTTP响应将延迟返回,或者立即返回。即使没有从数据库返回任何数据,这也使攻击者可以推断使用的有效载荷返回的是true还是false。
带外SQLi带外SQL注入不是很常见,主要是因为它取决于Web应用程序正在使用的数据库服务器上启用的功能。当攻击者无法使用同一通道发起攻击并收集结果时,就会发生带外SQL注入。带外技术为攻击者提供了基于时间推断的技术的替代方法,尤其是在服务器响应不是非常稳定的情况下(使基于时间推断的攻击不可靠)。
基于语音的SQL注入这是一种sql注入攻击方法,可以应用于通过语音命令提供对数据库访问权限的应用程序中。攻击者可以通过发送带有声音的sql查询来从数据库中获取信息。

SQL注入漏洞扫描程序工具:

  • SQLMap –自动SQL注入和数据库接管工具

  • jSQL注入 –用于自动SQL数据库注入的Java工具

  • BBQSQL –盲SQL注入开发工具

  • NoSQLMap –自动化的NoSQL数据库拥有权

  • Whitewidow – SQL 漏洞扫描程序

  • DSSS –该死的小型SQLi扫描仪

  • explo –人机可读的网络漏洞测试格式

  • Blind-Sql-Bitshifting –通过Bitshifting的SQL盲注入

  • Leviathan –广泛的大规模审核工具包

  • Blisqy –在HTTP标头(MySQL / MariaDB)中利用基于时间的盲SQL注入


参考文献:

SQL注入(OWASP)

https://www.owasp.org/index.php/SQL_Injection

盲SQL注入

https://www.owasp.org/index.php/Blind_SQL_Injection

测试SQL注入(OTG-INPVAL-005)

https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OTG-INPVAL-005)

SQL注入绕过 WAF

https://www.owasp.org/index.php/SQL_Injection_Bypassing_WAF

查看SQL注入代码

https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection

PL / SQL:SQL注入

https://www.owasp.org/index.php/PL/SQL:SQL_Injection

测试NoSQL注入

https://www.owasp.org/index.php/Testing_for_NoSQL_injection

SQL注入预防注入备忘单

https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html

SQL注入查询参数化备忘单

https://cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html

技术支持: 建站ABC | 管理登录