收获

  • 得到文件的十六进制数据时,可以将该十六进制数据粘贴进 WinHex 后另存为一个新的文件,就可以得到该十六进制数据对应的文件,注意文件后缀名

  • 留意 pyc、pyt 等,一般与 python 反编译有关,在线 pyc 反编译:python反编译 - 在线工具 (tool.lu)


【攻防世界】适合作为桌面


思路

解压得到一张 png 图片

攻防世界-适合作为桌面1.png

Stegsolve 打开:java -jar Stegsolve.jar

通过调整颜色发现一个二维码

攻防世界-适合作为桌面2.png

扫码得到一串字符:

03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000

发现该字符都是由数字和字母 ABCDEF 组成的,由此猜测这是十六进制

进行十六进制转字符串:

攻防世界-适合作为桌面3.png

有很多乱码,但是可以看到有不少 '{}''()',感觉像是代码

结合可以看到 1.pyt1.pyR,可能与 python 的反编译文件有关(由文件头 03 F3 也可推断是 pyc 文件)

将这一串十六进制数据,用 WinHex 粘贴进去:

攻防世界-适合作为桌面4.png

并另存为一个新的文件,后缀名改为 .pyc,得到 1.pyc:

攻防世界-适合作为桌面5.png

通过在线 pyc 反编译该文件:python反编译 - 在线工具 (tool.lu)

攻防世界-适合作为桌面6.png

反编译成功,得到代码:

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7

def flag():
    str = [
        102,
        108,
        97,
        103,
        123,
        51,
        56,
        97,
        53,
        55,
        48,
        51,
        50,
        48,
        56,
        53,
        52,
        52,
        49,
        101,
        55,
        125]
    flag = ''
    for i in str:
        flag += chr(i)
    
    print flag

发现是一段打印 flag 的代码,稍作修改,直接运行即可:

攻防世界-适合作为桌面7.png

得到 flag


结果

flag{38a57032085441e7}