TPCTF maze——WP

2023-12-13 20:23:56

解包,收集文件信息

先解包

反编译chal.pyc

核心逻辑在maze.so,chal.pyc导入了maze里面的run函数执行,maze是用Cython编译的

用strings查看可以看出是cython3.0.5版本编译的

获取符号表信息的两种方式

使用help读取

我们可以使用这个函数来导入maze,查看其中的全局变量,函数原型和类

这些变量名和函数名都像是base64,解密一下

CreateStringTabAndInitStrings函数

_Pyx_CreateStringTabAndInitStrings函数将所有 Python 代码使用到的字符串插入到__pyx_string_tab

找到run函数

直接搜索run,根据对Cython的研究,_pyx_pw_4maze_5run这个名称就是关键函数

分析一下这个函数

此处是input

此处调用了_pyx_mstate_global_static.__pyx_n_s_c29sdmU

这个加密函数

_pyx_pw_4maze_3c29sdmU

分析这个加密函数

采用了置换和异或加密

解密脚本

secret = [7, 47, 60, 28, 39, 11, 23, 5, 49, 49, 26, 11, 63, 4, 9, 2, 25, 61, 36, 112, 25, 15, 62, 25, 3, 16, 102, 38,
          14, 7, 37, 4, 40]
pos = [18, 17, 15, 0, 27, 31, 10, 19, 14, 21, 25, 22, 6, 3, 30, 8, 24, 5, 7, 4, 13, 29, 9, 26, 1, 2, 28, 16, 20, 32, 12,
       23, 11]
key = "HITPCTF"

for i in range(len(secret)):
    temp = secret[i]
    secret[i] = secret[pos[i]]
    secret[pos[i]] = temp

flag = ""
for i in range(len(secret)):
    flag += chr(secret[i] ^ ord(key[i % len(key)]))

print(flag)

文章来源:https://blog.csdn.net/m0_73644864/article/details/134976755
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。