Tomato 50 pts 19 solves 附件: 取证与安全杂项 番茄真的很好吃,可是,我的番...
बनाया गया: 9 अगस्त 2026
का उपयोग करके उत्तर दिया गया GPT-5.6 Thinking द्वारा Chat01
बनाया गया: 9 अगस्त 2026
का उपयोग करके उत्तर दिया गया GPT-5.6 Thinking द्वारा Chat01
Tomato
50 pts
19 solves
附件:
取证与安全杂项
番茄真的很好吃,可是,我的番茄怎么怪怪的,这是一道CTF
pythonfrom PIL import Image import numpy as np, os, math, statistics path="/mnt/data/mmexport1786262075808.jpg" im=np.array(Image.open(path).convert("RGB")).astype(np.float32) im.shape, im.mean(axis=(0,1)), im.std(axis=(0,1)) ((1553, 1170, 3), array([184.93161 , 68.84242 , 54.938263], dtype=float32), array([62.94121 , 45.43267 , 40.166775], dtype=float32))
能做。我已经对你发来的这张图做了一轮取证,目前最关键的结论是:这很可能不是题目的原始附件,而是经过微信保存/转发后的 JPEG。
我看到几个很有用的特征:
文件名是 mmexport1786262075808.jpg,mmexport...jpg 是微信保存图片时常见的命名形式。(Cnblogs)
图是 1170×1553 的普通 JPEG,没有 EXIF、Comment、额外压缩包、PNG/ZIP/RAR 等明显附加文件。
JPEG 的 EOI 后面只有 24 字节:
1b7298bc0000000057db824f9a4933d34607af98d66a0ebf
其中最后 16 字节恰好就是前面 JPEG 主体的 MD5:
57db824f9a4933d34607af98d66a0ebf
所以这段更像保存/传输产生的校验尾巴,不像 flag。
RGB 分离、各 bit-plane、通道差分、简单 LSB、ELA 我都扫过了,没有直接出现 flag / QR / 文本。
但图像本身非常异常:矩形边界基本落在 1/8 → 1/16 → 1/32 → 1/64 这种二次幂分割位置上。也就是说它不像随机马赛克,更像是经过了递归分块 / quadtree(四叉树)一类处理。
我也测试了“把 16×16 小块直接打乱后重新拼”的思路,结果原位置的边缘连续性反而远好于随机排列,所以并不是普通的拼图题。
红色本身也有意义:画面很像遥感影像的假彩色表达;近红外映射到红色通道时,植被经常会呈鲜红色。(Off-Nadir Delta) 不过这里额外的递归矩形结构显然还有人为处理。
所以现在我最怀疑两条路线:
你下一步直接把比赛平台下载下来的原始附件上传给我,作为“文件”发,不要截图、不要微信转发、不要另存为。 文件名是什么都不要改也没关系。
拿到原件后我可以继续直接往下拆,目标就是把 flag{...} 找出来。