2026.7.31(3)【日志分析】2026CCF-被入侵的数据库

发布时间:2026/9/28 10:35:38
2026.7.31(3)【日志分析】2026CCF-被入侵的数据库 题目信息项目内容题目名称2026CCF-被入侵的数据库题目来源玄机靶场题目类型日志分析 / Web 攻击溯源子分类SQL 注入、access.log 分析考点Web 中间件日志分析、SQL 注入流量识别、数据库名提取难度⭐最终 Flagflag{login_db}️ 使用工具文本编辑器 / 日志查看Python 3 解题思路题目给了一份 Web 中间件日志access.log3677 行Nginx/Apache 格式。日志里有大量扫描噪音404 探测真正的攻击者是执行SQL 注入的源 IP。核心思路从注入流量中找出攻击者 → 定位其提取数据库数据的语句 → 数据库名就写在FROM 库名.表名里。第 1 步识别 SQL 注入流量锁定攻击者先使用python脚本判断哪一个IP是访问量最多的。import re from collections import Counter data open(access.log, encodingutf-8).readlines() ip_counter Counter() for line in data: line line.strip() # 去掉首尾空白 if not line: # 跳过空行 continue ip line.split()[0] ip_counter[ip] 1 print( 各 IP 访问量 Top10 ) for ip, c in ip_counter.most_common(10): print(f{ip}: {c})发现123.13.22.45、192.168.1.100这两个IP访问量最多因此怀疑这两个IP的其中一个为攻击者。先查看123.13.22.45的相关日志发现这个IP在探测敏感路径但考虑到这个IP的访问量有3167次不可能是手工探测因此推测为使用扫描器探测。然后看192.168.1.100的相关日志发现 192.168.1.100 在/test/login.php上发起大量 SQL 注入因此判断攻击者为192.168.1.100因为访问量只有189次人类能做到且题目名称有提到数据库因此判定为攻击者。总结123.13.22.45扫描器和192.168.1.100注入攻击者是主要流量其中192.168.1.100 的请求全部是对/test/login.php的注入是真正的攻击者。⚠️注意123.13.22.45访问量虽大3167 次但它是在探测/druid/sql.html、/dump、/heapdump等敏感路径返回 404属于信息收集/扫描并没有成功注入拿到数据而 192.168.1.100 是对 login.php 的实际 SQL 注入。第 2 步定位注入成功、提取数据的请求通过查看日志发现注入手法多样UNION 联合注入、布尔盲注、时间盲注、EXTRACTVALUE 报错注入最终攻击者成功读到了数据。使用python脚本筛选攻击者192.168.1.100的请求,URL 解码后需要匹配FROM 库名.表名结构,输出成功查询数据表的注入语句,从而定位数据库名。import re from urllib.parse import unquote data open(access.log, encodingutf-8).readlines() # 只筛攻击者 IP 192.168.1.100 # 匹配 FROM 库名.表名不区分大小写并对整行做 URL 解码 pat re.compile(rFROM\s\w\.\w, re.IGNORECASE) seen set() # 用于去重 print(\n注入语句中带\FROM 库.表\这个特征日志行如下\n) for line in data: line line.strip() if not line: continue ip line.split()[0] if ip ! 192.168.1.100: continue decoded unquote(line) # URL 解码整行还原 SQL 语句 if pat.search(decoded): if decoded in seen: # 去掉重复的注入请求 continue seen.add(decoded) print(decoded)第 3 步提取数据库名注入语句中数据表以库名.表名形式被引用FROM login_db.secret→ 表secretFROM login_db.users→ 表users两者都隶属于同一个库login_db。⚠️注意题目要的是数据库名不是表名login_db是库名secret和users是库里的表。攻击过程还原攻击者192.168.1.100对/test/login.php的用户名字段发起 SQL 注入通过 UNION / 报错 / 盲注确认存在注入点枚举information_schema找到数据库结构从login_db库的secret、users表提取敏感数据造成泄露 最终 Flagflag{login_db}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询