CTF数据安全学习:杂项第一课,从识破伪装开始"

admin 2026-11-10 17:04:22 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

CTF数据安全学习:杂项第一课,从识破伪装开始

原创

allby森林之家
allby森林之家

allby森林之家

2026年11月6日 17:50
福建

去阅读

打 CTF 杂项题,最憋屈的死法是什么?

那就是把题(文件)下载下来后,发现双击怎么都打不开——题都打不开还做个毛?!

这道题未必难,或许是一个没有后缀的文件,或者是一个\"图片\",但你却卡死在了关卡的入口,对CTF望而远之……

我见过太多人栽在这儿,没关系,今天看完这篇文,就带你打开这座故弄玄虚、装神弄鬼的安全大门!

这一步其实有个标准的钥匙答案,那就是:后缀会说谎,但文件头不会。

【渗透测试与技术学习仅限授权环境与靶场,这是红线。】

文件头是什么?

每个文件的开头几个字节,是这套格式的\"身份证\",行话叫魔数(Magic Number)。

PNG 永远以 89 50 4E 47 0D 0A 1A 0A 开头;JPEG 永远是 FF D8 FF;ZIP 是 50 4B 03 04;gzip 是 1F 8B

不管后缀改成什么、文件名起得多清纯,前几个字节都骗不了人,所以解题第一步,那就是别信后缀,直接看头部(file 命令干的就是这件事)

binwalk 更狠一点,它不止看头部,还会把整个文件从头扫到尾,把所有魔数出现的位置全列出来(这里提一嘴,出题人有个惯用爱好:那就是把一个 ZIP 拼在 PNG 屁股后面)

扔进扫描器,输出如下:

题目B:没有后缀的49字节乱码

第二题更进一步:一个叫 no\_extension 的文件,什么后缀都没有,记事本打开全是乱码。

扫描器输出:

但扫描器扫出来的东西就多了:

手写扫描器,核心就几十行

把今天的主角放出来。魔数表 + 两个函数,一目了然:

MAGIC = [
    (b'\\x89PNG\\r\
\\x1a\
', 'PNG image'),
    (b'\\xff\\xd8\\xff',      'JPEG image'),
    (b'PK\\x03\\x04',        'ZIP archive'),
    (b'\\x1f\\x8b',          'gzip stream'),
    # ... 按需扩展
]

def head_type(data):          # file 的逻辑
    for sig, name in MAGIC:
        if data.startswith(sig):
            return name

def scan_all(data):           # binwalk 的逻辑
    hits = []
    for sig, name in MAGIC:
        start = 0
        while True:
            i = data.find(sig, start)
            if i < 0: break
            hits.append((i, name))
            start = i + 1
    return sorted(hits)

head\_type 看开头,scan\_all 扫全文。如果要带去比赛,再往 MAGIC 表里补全几十个常见魔数,然后给 offset 附近加一段 hexdump 预览,就算是一个能进考场的自用工具了~

有个提醒要说下:就算扫出多个魔数也不一定都是拼接!JPEG 内部就天然含有长得像压缩流的字节序列,会有误报。位置对不对,要结合文件大小和结构合理性自己判断

工具只报坐标,判断还在于人!So要记住:工具给你的是线索,最后破题还得靠你自己的脑子。

【所有实验文件均为本地构造的演示靶题,仅用于教学,这是红线。】

【小彩蛋】评论区的各位萌新可以猜个数:一张 1080P 的图,理论上能塞下多少个字符的 flag?

Bybit被盗事件深度解析" 网络安全文章

Bybit被盗事件深度解析"

Bybit被盗事件源于Safe开发者机器被黑客攻击,替换Safe{Wallet}服务器代码,导致交易签名被篡改。事件揭示了加密行业面临的不对称攻防问题,提醒了安全风控体系的重要性。BlockSec推出安全监控方案以保护多签钱包交易安全。
评论:0   参与:  0