文章总结: 文档介绍了2026数字中国创新大赛初赛中一个涉及大批量Word文档处理的CTF题目解法。作者通过Python脚本自动化解压.docx文件并利用正则表达式匹配隐藏的身份证号码,强调实际比赛中需平衡准确性与效率。文章指出数安题目正趋向通过数据量增加难度,更贴近现实场景,并提供了可复用的代码示例。 综合评分: 85 文章分类: CTF,数据安全,解决方案,安全工具,技术标准
2026数字中国创新大赛初赛wp之大批量文件处理
原创
一只岸上的鱼 一只岸上的鱼
一只岸上的鱼
2026年4月30日 09:13 江苏
在小说阅读器读本章
去阅读
缘起
其实这题目蛮简单的,就是在word中藏了信息,新格式的word(.docx)已经基于xml和zip了,其实没什么可藏的,唯一的难点是数量。
题目
附件我放在了网盘:
https://cloud.189.cn/t/imamemJ3yuqi(访问码:b09i)
思路
解压文件看看,其实很简单,就是word而已,202个,每个打开看看:
- 一全选看看是不是字体颜色白色隐藏
- 打开word的隐藏选项
然后,重复202次…
很明显,这是不可能的,这题还没做完,比赛就结束了,只能靠脚本。
老规矩,上代码:
import reimport zipfilefrom pathlib import Pathfrom xml.etree import ElementTree as ET
# 1def extract_text_from_docx(docx_path): text = "" try: with zipfile.ZipFile(docx_path) as docx_zip: with docx_zip.open('word/document.xml') as document_xml: tree = ET.parse(document_xml) root = tree.getroot() for elem in root.iter(): if elem.tag.endswith('}t'): text += elem.text + ' ' except Exception as e: print(f"Error processing {docx_path}: {e}") return text.strip()
# 2def find_idcards(text: str) -> list: results = [] pattern_18 = r'\b(\d{17}[\dXx])\b'
for match in re.finditer(pattern_18, text): id_num = match.group(1) if id_num not in results: results.append(id_num) return results
if __name__ == '__main__': all_results = [] docx_files = list(Path("./docs").rglob('*.docx')) total = len(docx_files) print(f"找到 {total} 个 Word 文档") idcard = [] for i, filepath in enumerate(docx_files, 1): text = extract_text_from_docx(filepath) idcards = find_idcards(text) if len(idcards) > 0: print(f"[{i}/{total}] 扫描: {filepath.name} - 发现 {len(idcards)} 个身份证号")
跑一下结果:
简单解释:
-
这是一个简单的抽取word纯文本的简单方式
-
这个是一个最简单的判断身份证的方式:
其实这里注意2点:
1、身份证分老旧(15位、18位)
2、表现格式:就是一串连续的数字,还是分段存储的(可能是空格、短横等等)
不过比赛么,为了节省时间,就不用写那么全年的脚本,一个一个试就好了,先试18位的,一次就中了
小结
自动CTF比赛分裂成网安和数安以来,数安越来越有自己的特色了,越来越多的题目都是靠量来增加难度的,这其实也更贴实际使用。
推荐阅读
本次比赛其他题目:
2026数字中国创新大赛初赛wp之图片隐写一
2026数字中国创新大赛初赛wp之俩签到题
2026数字中国创新大赛数字安全赛道writeup之web题目一
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:一只岸上的鱼 一只岸上的鱼 一只岸上的鱼《2026数字中国创新大赛初赛wp之大批量文件处理》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论