哈喽,大家好!今天给大家分享一篇来自 Dewanand Vishal 的精彩文章,看看他是如何发现自己的第一个 SQL 注入漏洞并获得不错赏金的。
正文开始:
“这是一个关于我如何在一个私有项目中发现我第一个 SQL 注入漏洞的故事。
虽然我并非此领域新手,但由于各种新型 Web 应用防火墙的出现,如今想要找到 SQLi 漏洞已经变得越来越有挑战性。
每当看到有人发现 SQLi 漏洞并在 Twitter 上分享时,我总是感到非常好奇。在我们深入这个故事之前,先让我们搞清楚什么是 SQL 注入。”
SQL 注入是一种攻击类型,它利用的是 Web 应用程序中与 SQL 数据库交互时存在的漏洞。
攻击者会将恶意的 SQL 代码注入到输入字段中,欺骗应用程序执行这些代码。这可能导致他们未经授权访问敏感数据、修改或删除数据,甚至完全控制数据库服务器。
漏洞究竟在哪里?
这是 Intigriti 平台上的一个私有众测项目。当时我正在测试一个健康产品相关的网站,希望能找到一些容易发现的低危漏洞,然后我注意到了一个 BMI计算器。
我尝试输入身高和体重数据,然后捕获了这个请求并将其发送到 Repeater。
我注意到,当我在request body的 unitWeight
参数中输入一个单引号 '
时,服务器返回了一个 500 错误。
紧接着,我又输入了另一个单引号 '
来尝试“修复”这个查询,结果错误消失了!
嗯,现在是时候证明这里确实存在 SQLi 漏洞了。我尝试了几个常见的 payload,最终,有一个 payload 成功地让服务器响应中出现了时间延迟。
Payload 如下:‘XOR(if(now()=sysdate(),sleep(10),0))XOR’Z
发现这点后,我立即将此漏洞报告给了项目的安全团队。他们很快确认了这个漏洞,并进行了修复,同时也给我发放了赏金。
这类漏洞通常在哪里可以找到?
-
表单字段 (Form fields): 任何用户可以输入文本、数字或其他数据的输入框,比如登录表单、搜索框或评论区。 -
URL 参数 (URL parameters): URL 中问号(?)后面传递的值,例如 ?id=1
。 -
Cookies: 存储在用户计算机上的数据,这些数据会随着每个请求发送到服务器。 -
HTTP 头部 (HTTP headers): 作为 HTTP 请求一部分从客户端发送到服务器的信息。 -
POST 请求 (POST Request): 在 HTTP POST 请求体中发送给服务器的数据。这些数据通常包含参数和标识符。
====本文结束====
以上内容由漏洞集萃翻译整理。
参考:
https://dewcode.medium.com/how-i-found-my-first-sqli-vulnerability-3500-bounty-7c441007bcf9
原文始发于微信公众号(漏洞集萃):价值€3500 的 SQL 注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论