Portswigger靶场之 Blind SQL injection with time delays通关秘籍

该靶场存在一个盲 SQL 注入漏洞。该应用程序使用跟踪 cookie 进行分析,并执行包含所提交 cookie 值的 SQL 查询。该 SQL 查询的结果并未被返回,而且应用程序的反应也没有任何不同之处。关于该查询是否返回任何行或者是否会导致错误。然而,由于该查询已执行同时,还可以通过触发条件时间延迟来获取信息。为了解决该漏洞,需利用 SQL 注入漏洞来造成 10 秒的延迟。

盲 SQL 注入漏洞即推断 SQL 注入发生在攻击者无法直接从数据库获取数据的情况下。相反,攻击者根据应用程序响应的行为或时间来推断数据库的信息。这种类型的注入通常需要更长的时间来执行,但仍然非常有效。

  • 基于布尔的盲注入 (Boolean-based Blind SQLi): 攻击者发送一系列 SQL 查询,这些查询会根据结果的真假导致应用程序的响应有所不同(例如,页面显示或不显示)。通过观察这些布尔响应,攻击者可以逐个字符地推断出数据库中的数据。

  • 基于时间的盲注入 (Time-based Blind SQLi) : 攻击者发送的 SQL 查询中包含一个时间延迟函数(如 SLEEP()BENCHMARK())。如果查询中的条件为真,数据库将执行延迟,从而导致应用程序响应时间变长。攻击者通过测量响应时间来判断条件是否成立,以此推断出数据。

我们这里的是属于第二种基于时间的盲注入,这里要求非常简单只需要我们延时10秒就可以通关了。


  • MySQL数据库:使用 sleep(seconds) 函数。--+ 是一种常见的注释语法,用于注释掉原始查询的其余部分。
sql 复制代码
iEdLTkCKLQPY0lva' || sleep(10) --+
  • PostgreSQL:PostgreSQL 使用 pg_sleep(seconds) 函数
sql 复制代码
iEdLTkCKLQPY0lva' || pg_sleep(10) --+

成功了,说明这是个PostgreSQL数据库。

此外,其他数据库可以采用以下语句实现延迟:

  • Microsoft SQL Server:使用 WAITFOR DELAY 'hh:mm:ss' 语法。注意,这里不需要 OR||,因为 WAITFOR 是一个独立的语句,通常用于在查询执行前强制暂停。
sql 复制代码
iEdLTkCKLQPY0lva' WAITFOR DELAY '00:00:10' --
  • Oracle:Oracle 数据库使用 DBMS_LOCK.SLEEP(seconds) 包和函数来实现延迟。
sql 复制代码
iEdLTkCKLQPY0lva' || DBMS_LOCK.SLEEP(10) --
相关推荐
_Jimmy_39 分钟前
SQLAlchemy 复杂 SQL 执行指南与模板库
python·sql
千维百策6661 小时前
SRE 中如何消除琐务:提升工程效率与服务可靠性的实践方法
数据库
卓怡学长1 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
名不经传的养虾人1 小时前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai
程序员佳佳2 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
绩隐金2 小时前
用AI开了本小说 九折归潮
数据库
heimeiyingwang2 小时前
【架构实战】MySQL索引优化:从慢查询到毫秒响应
数据库·mysql·架构
得闲喝茶2 小时前
跨表数据匹配——VLOOKUP、XLOOKUP
大数据·数据库·笔记·信息可视化·数据分析·excel
snow@li2 小时前
数据库:如何设计最佳索引 / 数据库最佳索引设计指南
数据库
2601_954916592 小时前
ChatGPT 5.6 深度实践:用 AI 重构云成本治理体系,而不是简单“降本”
人工智能·sql·chatgpt·重构·测试用例