SQL注入攻击-检索隐藏的数据
接下来的系列章节将会通过16个试验场景来系统性的讲解SQL注入攻击。
这个章节将结合靶场试验来介绍如何利用SQL注入攻击来检索隐藏的数据。
SQL注入是一种网络安全漏洞,允许攻击者干扰应用程序对其数据库的查询,并允许攻击者查看他们通常无法检索的数据。包括属于其他用户的数据,或应用程序本身能够访问的任何其他数据。
在许多场景下,攻击者可以修改或删除这些数据,从而导致应用程序的内容或行为发生持续变化。
在某些特定场景下,攻击者甚至可以升级SQL注入攻击从而破坏底层服务器或其他后端基础架构,或者是执行Dos拒绝服务攻击。
成功的SQL注入攻击可能会导致未经授权访问敏感数据,例如密码、信用卡详细或个人用户信息。
近年来,许多备受瞩目的数据泄露时间都是SQL注入攻击所导致的,在某些情况下,攻击者可以通过后门持久的隐匿在受害者的系统中,从而导致长期危害,而这种危害可能会在很长一段时间内被忽视。
通常通过应用程序界面查询所显示的数据内容都是经过处理,这些数据都是服务提供商认为可以展示给用户的,但我们可以利用SQL注入来修改SQL查询从而返回其他结果。
一个显示不同类别产品的购物应用程序,当用户点击不同产品类别时,他们的浏览器会请求不同的URL:
这个URL带了一个参数,从而使得应用程序可以利用这个参数进行SQL查询,并从数据库中检索相关产品的详细信息,下面是后端数据的查询语句:
其中④部分"released=1"是用来表示这个产品是已发布,对于未发布的产品会设置"released=0"
如果这个应用程序没有实施任何针对SQL注入攻击的防御措施,攻击者就可以构建如下攻击的URL:
这里的关键是注入了"--"(双破折号),这个在SQL语句中表示注释指示符,注释指示符后面的所有语句都会被解释为注释。这有效地删除了这条查询语句的红框部分内容,因此查询的结果不仅仅是已发布的产品,包括未发布的产品,即所有产品都可以被查询显示。
更进一步,攻击者可以使用应用程序显示任何类别的所有产品,包括他们不知道的类别:
首先蓝框部分被注释掉了,剩余查询的语句将返回符合"category"是"Gifts"类别或1=1这两个条件其中之一的数据。由于1=1始终为真,因此这个查询将返回所有数据。
https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data
这个试验场景包含有SQL注入漏洞,当用户选择一个类别时,应用程序会进行类似下面这种SQL查询:
要完成试验,需要利用SQL注入攻击,显示任何类别的所有产品的详细信息,包括已发布和未发布的产品。
①这个试验比较简单,首先把Burp Suite设置成拦截模式
③通过Burp Suite抓包拦截后,修改下"category"参数,在后面增加
/
/
/ /
/ /
标签: