BUUCTF sqltest wp
题目网站遭受到攻击了还好我们获取到了全部网络流量。 链接: https://pan.baidu.com/s/1AdQXVGKb6rkzqMLkSnGGBQ提取码: 34uu 注意得到的 flag 请包上 flag{} 提交flagflag{47edb8300ed5f9b28fc54b0d09ecdef7}思路可以把这份抓包理解成攻击者不停问数据库“是/不是”问题再根据网页长短读取答案。抓包共有 9720 帧、972 个 HTTP 请求。客户端是 10.0.2.15​服务器是 172.16.80.11:80​。flag 被编码在一连串 SQL 判断的真假结果中在读取 flag 以前攻击者先枚举数据库结构阶段相关帧查询目标推导结果4–176数据库数量5185–4166数据库名称​information_schema​、ctf​、db_flag​、mysql​、test​4174–4346​db_flag​ 中的表数量14354–5096表名​tb_flag​5104–5266字段数量25277–6006字段名​id​、flag​6014–6186表中记录数量16194–6266flag 长度386274–9716flag 的 38 个字符完整 flag也就是说flag 不是“打开某个包就能看到”而是需要把数百个请求和响应组合起来推导。下面只列每个字符最终确定数值所需的两组决定性包。含义​真包​询问 ASCII 当前值-1​响应长度为 848​假包​询问 ASCII 当前值​响应长度为 780表示方式 6344→6346​6344 是请求6346 是响应​位置字符ASCII真gt; ASCII-1​假gt; ASCII​1​f​1026344→63466354→63562​l​1086454→64566444→64463​a​976534→65366524→65264​g​1036634→66366614→66165​{​1236714→67166734→67366​4​526824→68266814→68167​7​556894→68966914→69168​e​1016934→69367004→70069​d​1007094→70967034→703610​b​987164→71667184→718611​8​567274→72767264→726612​3​517304→73067364→736613​0​487434→74367454→745614​0​487524→75267544→754615​e​1017564→75667634→763616​d​1007724→77267664→766617​5​537804→78067814→781618​f​1027904→79067914→791619​9​577994→79967974→797620​b​988064→80668084→808621​2​508164→81668114→811622​8​568254→82568244→824623​f​1028344→83468354→835624​c​998444→84468434→843625​5​538524→85268534→853626​4​528624→86268614→861627​b​988694→86968714→871628​0​488784→87868804→880629​d​1008884→88868824→882630​0​488954→89568974→897631​9​579054→90569034→903632​e​1019074→90769144→914633​c​999244→92469234→923634​d​1009324→93269264→926635​e​1019344→93469414→941636​f​1029514→95169524→952637​7​559594→95969614→961638​}​1259704→97069714→9716有些“假包”出现在“真包”前面是因为攻击工具测试阈值的顺序不是严格从小到大而是在不断调整上下界。判断盲注中哪个响应包为真哪个为假所有响应都是HTTP/1.1 200 OK因此不能根据状态码判断。但响应长度和内容不同SQL 结果响应特征真​Content-Length: 848​页面里有 Thiss Title!​假​Content-Length: 780​新闻内容区域为空所以后面可以统一理解成848 条件为真 780 条件为假判断flag长度的url语句GET /index.php?actnewsid1 and length((select concat_ws(char(94), flag) fromdb_flag.tb_flag limit 0,1))37 HTTP/1.1id1 and​id1​ 保证原有查询成立页面有基础数据​and​ 追加布尔判断利用页面响应差异内容多少、包大小区分真假条件属于布尔盲注基础结构。子查询 select concat_ws(char(94), flag) from db_flag.tb_flag limit 0,1​​db_flag.tb_flag​目标库、存 flag 的表​limit 0,1​只查询第一条记录避免多行数据导致 SQL 报错​char(94)​ ^​​concat_ws(^,flag)​带分隔符拼接此处只单个字段等价于直接取flag​不改变字符串本身仅多此一举 整体作用取出完整 flag 字符串。​length(字符串)​SQL 内置函数返回字符串字符总长度。 示例length(flag{123456})​ 会返回这个字符串有多少个字符。​37​ 布尔判断核心判断 flag 字符串总长度是否​大于 37​请求返回页面正常、数据包大 → 条件为真flag 长度 37请求页面空白、无数据、响应包很小 → 条件为假flag 长度 ≤ 37。判断flag第几个位置到底为哪个ascii值的语句fGET /index.php?actnewsid1 and ascii(substr(((select concat_ws(char(94), flag) from db_flag.tb_flag limit 0,1)), 1, 1))101 HTTP/1.1lGET /index.php?actnewsid1 and ascii(substr(((select concat_ws(char(94), flag) from db_flag.tb_flag limit 0,1)), 2, 1))107 HTTP/1.1ascii( substr( ((select concat_ws(char(94), flag) from db_flag.tb_flag limit 0,1)), 1, 1 ) )MySQL 语法规定当 select 作为子查询放在另一个函数内部必须用一对括号包裹。 第二层括号则是盲注习惯性叠加括号防止运算符优先级错乱绕过 WAF / 过滤经典注入小技巧拼接注入时的语法容错。id1 and​id1​ 保证原有查询成立页面有基础数据​and​ 追加布尔判断利用页面响应差异内容多少、包大小区分真假条件属于布尔盲注基础结构。​select flag from db_flag.tb_flag limit 0,1​从 db_flag​ 库 tb_flag​ 表取出第一条数据的 flag 字段核心数据源解决了之前 count (*) 只能取数字的致命问题。​concat_ws(char(94), flag)​​char(94)​ ASCII94对应字符 ^​​concat_ws(分隔符, 字符串)​带分隔符拼接字符串 这里只传了一个字段 flag没有多字段拼接concat\_ws 在这里属于多余写法等价于直接写 flag​不会影响结果但没必要。 补充concat_ws 真正用途是多字段拼接例 concat_ws(^,id,flag)​ → 1^flag{xxx}​。​substr(...,1,1)​截取拼接结果的第 1 位单个字符修改第二个参数2、3、4...​即可遍历 flag 每一位。​ascii(单个字符)101​把截取字符转 ASCII 码判断是否大于 101ASCII101 小写字母 e。页面返回正常、数据包大 → 条件为真该字符 ASCII101页面空白、数据包极小 → 条件为假该字符 ASCII≤101完整对应关系SQL含义​​length(flag)37​flag 总长度是否大于 37​​substr(flag,1,1)​取第 1 个字符​​substr(flag,2,1)​取第 2 个字符​​substr(flag,3,1)​取第 3 个字符​​substr(flag,38,1)​取第 38 个字符​​ascii(...)100​这个字符的 ASCII 是否大于 100flag找出方法对着上面的提示一个一个包看过去就可以通过字符型盲注返回包的提示从而判断出每个位置的flag都是什么字母。可以在过滤器中使用http.file_data contains Thiss Title!​这会筛选出所有盲注为真的数据包然后就可以肉眼观察了不然就要写脚本了。按顺序一个个找下去最终拼出flagflag{47edb8300ed5f9b28fc54b0d09ecdef7}

相关新闻

全面战争模组开发入门:使用RPFM工具从零修改游戏数据

全面战争模组开发入门:使用RPFM工具从零修改游戏数据

1. 项目概述:从玩家到创造者的第一步如果你和我一样,在某个策略或角色扮演游戏里投入了成百上千个小时,把官方内容玩了个底朝天,那么“制作模组”这个念头迟早会冒出来。你想调整某个兵种的数值,想给心爱的角色换上一套…

2026/10/17 16:38:37 阅读更多 →
大模型架构创新:从参数竞赛到仿生设计

大模型架构创新:从参数竞赛到仿生设计

1. 大模型发展的新范式:从参数竞赛到架构创新上周Meta与哈佛联合发布的"孔夫子"模型在业内引发热议,这个参数量仅7B的"小模型"在多项基准测试中碾压了参数量十倍于它的对手。作为长期跟踪大模型技术演进的研究者,我亲历了…

2026/10/17 15:22:03 阅读更多 →
RLLaVA框架:多模态大模型的强化学习训练优化

RLLaVA框架:多模态大模型的强化学习训练优化

1. RLLaVA框架设计背景与核心挑战多模态大模型(Vision-Language Models, VLM)的强化学习训练面临三重技术鸿沟:视觉编码器与语言模型的异构架构融合、跨模态奖励信号设计、以及训推协同的系统开销。传统RL框架如Ray RLlib虽然功能完备&#x…

2026/10/15 22:32:45 阅读更多 →

最新新闻

CentOS源码编译Python 3.12:避开OpenSSL和系统Python冲突的完整指南

CentOS源码编译Python 3.12:避开OpenSSL和系统Python冲突的完整指南

在 CentOS 上装 Python 3.12,说难不难,说简单也真有不少坑。这篇文章不绕弯子,直接讲我从下载源码到装完跑通的全过程,包括那些文档里不会写的坑,比如 OpenSSL 版本不对导致 ssl 模块装不上、装完 python3 命令还指向旧…

2026/10/18 10:26:43 阅读更多 →
爱普生机器人直连三菱PLC:基于MC协议自定义通信驱动实战

爱普生机器人直连三菱PLC:基于MC协议自定义通信驱动实战

工业现场把爱普生机器人和三菱PLC放在同一个电控柜里配合干活,是再常见不过的场景。但机器人怎么从PLC里高效、批量、实时地拿数据,往往是整个项目里最磨人的一环。IO硬接线简单粗暴,点位一多就变成蜘蛛网;买协议转换网关&#xf…

2026/10/18 10:26:43 阅读更多 →
PSS参数整定不再靠试凑:MFO算法+Simulink实现自动化优化与对比

PSS参数整定不再靠试凑:MFO算法+Simulink实现自动化优化与对比

简介:面向电力系统动态稳定性研究的MATLAB原创资源包,提供基于多目标遗传算法(MFO)的电力系统稳定器(PSS)参数优化实现。压缩包共29个文件、149KB,其中16个m脚本负责核心算法与仿真控制&#xf…

2026/10/18 10:26:43 阅读更多 →
Postman面试指南:从环境变量到Newman的接口测试体系

Postman面试指南:从环境变量到Newman的接口测试体系

最近帮团队做了好几轮后端和测试方向的面试,几乎每一位候选人的简历里都写着"熟练使用Postman",但能围绕Postman面试问题聊到点子上的,确实不多。多数人停在"会发请求、会看返回"这个层面,一旦被问到"你…

2026/10/18 10:26:43 阅读更多 →
Opus 5.5:用代码定义动效视频的数学本质

Opus 5.5:用代码定义动效视频的数学本质

1. “用代码拍视频”不是玄学:Opus 5.5 动效视频的本质是一场精准的时序控制实验你有没有试过在剪辑软件里拖动关键帧滑块,反复微调0.3秒的缩放曲线,只为让一个文字弹入的节奏“刚好不生硬”?我试过——在某次交付前夜&#xff0c…

2026/10/18 10:26:43 阅读更多 →
手机号脱敏实战:正则表达式与多语言实现方案

手机号脱敏实战:正则表达式与多语言实现方案

手机号脱敏这块需求,几乎所有做业务系统开发的人都碰到过。无论是用户列表展示、订单详情、聊天记录,还是后台审计日志,总有个地方需要把手机号中间四位打上星号再展示出来。今天就把这个需求从方案选型到代码实现、再到生产环境里的各种坑&a…

2026/10/18 10:25:43 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →