公司动态

【CTF-MISC-数据处理与分析】使用powershell搜索大量文件包含的文字

📅 2026/7/24 22:30:14
【CTF-MISC-数据处理与分析】使用powershell搜索大量文件包含的文字
题目2025春秋杯网络安全联赛冬季赛\MISC\数据处理与分析\大海捞针https://match.ichunqiu.com/index?kUWQFNQw_C2pXMlVwUjZQYlx-UzFaOQozBGIHPlRmDDVRbgQzXG4KbgMxAWc某核心服务器的备份数据被非法导出其中包含上千个不同格式的杂乱文件。据可靠情报Flag就隐藏在这些文件中的某处。由于文件数量巨大手动查找无异于大海捞针。请利用你的自动化处理能力在海量噪音中找回这段丢失的Flag。附件下载https://pan.baidu.com/share/init?surlSgUN5bfIiZrENBd409av_A提取码GAME解题思路使用如下命令搜索Get-ChildItem-Recurse-File|Select-String-Patternflag\{[^}]\}-CaseSensitive搜索结果\\raidrive-administrator\webdav服务器\其他\考证\A网络安全类比赛\2025春秋杯网络安全联赛冬季赛\MISC\数据处理与分析\大海捞 针\大海捞针-40bbf257393560cf199300d4488e853e\leak_data(2)\dir_06\internal_resource.png:5:# SECRET_DATA: flag{9b3d6f1a-0c48-4e52-8a97-e2b5c7f4d103}验证直接打开发现是一张图片用记事本打开发现了末尾的flag答案flag{9b3d6f1a-0c48-4e52-8a97-e2b5c7f4d103}附录搜索命令解释命令详细解析该命令用于在递归遍历所有文件的同时搜索符合特定格式的 flag 字符串具体分解如下1. 第一部分Get-ChildItem -Recurse -FileGet-ChildItemPowerShell 中用于列出目录内容的核心命令类似 Linux 的ls。-Recurse递归遍历当前目录及其所有子目录确保搜索覆盖所有嵌套文件夹。-File仅筛选出文件对象排除目录本身。这样可以避免对目录名进行搜索只关注文件内容。2. 管道操作|管道符号将前一个命令的输出所有递归找到的文件对象传递给后一个命令作为其输入。3. 第二部分Select-String -Pattern flag\{[^}]\} -CaseSensitiveSelect-StringPowerShell 中用于在文本中搜索字符串的命令类似 Linux 的grep。-Pattern flag\{[^}]\}指定搜索的正则表达式模式含义如下flag\{匹配文本 “flag{”\{是对大括号的转义因为大括号在正则中是特殊字符。[^}]匹配一个或多个非右大括号的字符[^}]表示“不是右大括号”表示“一个或多个”。\}匹配右大括号}同样需要转义。整体效果匹配flag{...}格式的字符串其中...是任意非右大括号的内容直到遇到}结束。-CaseSensitive大小写敏感模式仅匹配小写的 “flag”避免误匹配 “FLAG” 等变体。工作流程递归扫描Get-ChildItem -Recurse -File递归遍历所有子目录收集所有文件路径。内容搜索Select-String对每个文件的内容执行正则匹配查找符合flag{...}格式的字符串。结果输出当找到匹配时输出包含匹配内容的文件路径、行号和具体匹配文本。为什么能在二进制文件中找到 FlagPNG 是二进制文件但 PowerShell 的Get-ContentSelect-String隐式调用会尝试按文本模式读取文件。对于二进制数据无法解析的部分会被忽略而能解析为文本的部分如文件末尾的注释或嵌入文本会被正常处理。因此即使 Flag 嵌入在 PNG 二进制文件中只要以文本形式存储仍能被该命令捕获。示例效果该命令在执行时会输出类似以下结果\\path\to\file.png:5:# SECRET_DATA: flag{9b3d6f1a-0c48-4e52-8a97-e2b5c7f4d103}其中包含文件路径\\path\to\file.png行号5匹配内容所在行匹配文本# SECRET_DATA: flag{9b3d6f1a-0c48-4e52-8a97-e2b5c7f4d103}核心优势全目录覆盖-Recurse确保无遗漏搜索所有子目录。精确匹配正则表达式flag\{[^}]\}精确锁定 Flag 格式避免误报。高效过滤-File排除目录减少无效搜索提升速度。