vlambda博客
学习文章列表

SQL注入攻击-检索隐藏的数据

接下来的系列章节将会通过16个试验场景来系统性的讲解SQL注入攻击。
这个章节将结合靶场试验来介绍如何利用SQL注入攻击来检索隐藏的数据。
使用的靶机场景是portswigger里面提供的
https://portswigger.net
 

什么是SQL注入?
SQL注入是一种网络安全漏洞,允许攻击者干扰应用程序对其数据库的查询,并允许攻击者查看他们通常无法检索的数据。包括属于其他用户的数据,或应用程序本身能够访问的任何其他数据。
在许多场景下,攻击者可以修改或删除这些数据,从而导致应用程序的内容或行为发生持续变化。


在某些特定场景下,攻击者甚至可以升级
SQL注入攻击从而破坏底层服务器或其他后端基础架构,或者是执行Dos拒绝服务攻击。

 

SQL注入攻击有什么影响?
成功的SQL注入攻击可能会导致未经授权访问敏感数据,例如密码、信用卡详细或个人用户信息。
近年来,许多备受瞩目的数据泄露时间都是SQL注入攻击所导致的,在某些情况下,攻击者可以通过后门持久的隐匿在受害者的系统中,从而导致长期危害,而这种危害可能会在很长一段时间内被忽视。
 

检索隐藏的数据
通常通过应用程序界面查询所显示的数据内容都是经过处理,这些数据都是服务提供商认为可以展示给用户的,但我们可以利用SQL注入来修改SQL查询从而返回其他结果。
比如下面这个例子:
一个显示不同类别产品的购物应用程序,当用户点击不同产品类别时,他们的浏览器会请求不同的URL

SQL注入攻击-检索隐藏的数据

这个URL带了一个参数,从而使得应用程序可以利用这个参数进行SQL查询,并从数据库中检索相关产品的详细信息,下面是后端数据的查询语句:

SQL注入攻击-检索隐藏的数据

这条SQL查询语句要求数据库返回:
①所有详细信息
②从"products"这张表
③其中"category"类别是"Gifts"
④并且"released"1
其中④部分"released=1"是用来表示这个产品是已发布,对于未发布的产品会设置"released=0"
如果这个应用程序没有实施任何针对SQL注入攻击的防御措施,攻击者就可以构建如下攻击的URL

SQL注入攻击-检索隐藏的数据

这会导致SQL查询语句变成这样:

SQL注入攻击-检索隐藏的数据

这里的关键是注入了"--"(双破折号),这个在SQL语句中表示注释指示符,注释指示符后面的所有语句都会被解释为注释。这有效地删除了这条查询语句的红框部分内容,因此查询的结果不仅仅是已发布的产品,包括未发布的产品,即所有产品都可以被查询显示。
更进一步,攻击者可以使用应用程序显示任何类别的所有产品,包括他们不知道的类别:

SQL注入攻击-检索隐藏的数据

上面这条URL会导致SQL查询变成这样:

SQL注入攻击-检索隐藏的数据

首先蓝框部分被注释掉了,剩余查询的语句将返回符合"category""Gifts"类别或1=1这两个条件其中之一的数据。由于1=1始终为真,因此这个查询将返回所有数据。
 
场景试验:
https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data
场景说明:
这个试验场景包含有SQL注入漏洞,当用户选择一个类别时,应用程序会进行类似下面这种SQL查询:

SQL注入攻击-检索隐藏的数据

试验目的:
要完成试验,需要利用SQL注入攻击,显示任何类别的所有产品的详细信息,包括已发布和未发布的产品。
攻击过程:
这个试验比较简单,首先把Burp Suite设置成拦截模式

SQL注入攻击-检索隐藏的数据

②在浏览器中点击任意的商品类别

SQL注入攻击-检索隐藏的数据

 
③通过Burp Suite抓包拦截后,修改下"category"参数,在后面增加
'+OR+1=1--
再点击"Forward"放行请求

可以看到,所有商品都被显示出来了,完成试验。


/




/ /
/ /