XCTF——适合作为桌面
一、题目
开局一张图,内容自己想办法。
二、解题方法
第一步
我们使用stegsolve工具(用Java写的程序,需要Java运行环境)对图片进行分析,
使用下方的<>按键来更换图片的查看模式,发现了一个二维码。
第二步
使用在线二维码扫描工具(网上一搜就有)对其进行扫描,生成一串16进制的数字。
03F30D0A79CB05586300000000000000000100000040000000730D0000006400008400005A000064010053280200000063000000000300000016000000430000007378000000640100640200640300640400640500640600640700640300640800640900640A00640600640B00640A00640700640800640C00640C00640D00640E00640900640F006716007D00006410007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100715500577C010047486400005328110000004E6966000000696C00000069610000006967000000697B000000693300000069380000006935000000693700000069300000006932000000693400000069310000006965000000697D000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000312E7079520300000001000000730A0000000001480106010D0114014E280100000052030000002800000000280000000028000000007304000000312E707974080000003C6D6F64756C653E010000007300000000
第三步
使用 winhex 工具进行解码,选择 AscII Hex。
我们可以看到出现了flag,.py
和.pyt
等字样,根据这些信息我们可以推断,这应该是一个 python
进行编译之后生成的 pyc
文件(一种二进制文件)
接着我们将其保存为.pyc
文件
第四步
对其进行反编译为.py
文件
在 PyCharm 的终端中安装 uncompyle6 模块。使用以下命令完成此操作:
pip install uncompyle6
接着导航到包含 .pyc
文件的目录,使用以下命令反编译 .pyc
文件:
uncompyle6 filename.pyc > filename.py
其中filename.pyc
是要反编译的文件名,filename.py
是要生成的 Python
文件的名称。
实例
如此我们就得到了一个py
文件,代码如下
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)
# okay decompiling fan.pyc
flag()
其中flag()是我自己添加的函数,以便输出flag。
最终我们得到了flag{38a57032085441e7}