【攻防世界】-时间刺客!

⭕、知识点

图片修改日期时间戳隐写/ASCII编码/脚本编写

一、题目

四张图片

二、解题

1、binwalk、zsteg、outguess,stegsolve都无果

2、查看十六进制搜索关键词无果

3、查看属性发现修改日期有点奇怪,每张都不一样,猜测隐藏信息

4、编写脚本提取时间戳

import os


img_dir = os.listdir('./images')

time_stamp_list = []

flag = ""

for image_name in img_dir:
    time_stamp = int(int(int(os.path.getmtime('images/'+image_name)*(10**9)) % (2**64-1)) / (10**9))
    str_time_stamp = str(time_stamp)
    print(str_time_stamp)
    ascii_code = ""
    for i in range(len(str_time_stamp)):
        ascii_code += str_time_stamp[i]
        if int(ascii_code) > 127:
            ascii_code = ascii_code[:len(ascii_code) - 1]
            flag += chr(int(ascii_code))
            ascii_code = ""
            ascii_code += str_time_stamp[i]
        else:
            if i == len(str_time_stamp)-1:
                flag += chr(int(ascii_code))
print(flag)

注意:以下是对代码的一些解释

1、getmtime的单位为秒,并且有小数点(保留6位),所有时间戳放大至纳秒级别都小于264,所以为了方便处理,就先把时间戳都放大109倍
2、每次放缩和运算后及时用int()取整
3、由于有的时间戳是负数,所以需要对其取模才能得到正数

吐槽:题目出得很无厘头,官方的wp也很抽象,解出这题的容错率和方法途径都很单一,并不是一道好题,但是思路可以借鉴,并不需要在脚本代码上面死磕

三、答案

flag{T1m3_f1ie5}

四、总结

为图片隐写提供新的思路,修改日期

posted @ 2025-04-16 00:36  wyuu101  阅读(452)  评论(0)    收藏  举报