[De1CTF2019]Re_Sign

[De1CTF2019]Re_Sign

6 再次练习了动调技巧...

首先要脱一个比较奇怪的UPX 正常工具脱不了 dump出来导入表没重建 不能动调
然而这个工具却可以
image
人麻了...

然后开始动调分析
image

注意 findcrypt识别时有两个base64table!
sub_401233的变表是在一个大循环内部完成的 这里用ollydbg动调能看出来
x32dbg都找不怎么着...
image

5cA678即为变表的位置
可以提取出来
0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/

image

v4那儿就是一个copy
关注check点的函数
image
传的是一个正常的base表
下面这个是find_pos典型操作
image

结合动调得到的数据 E->5 那么对照表一看 就是一个位置映射
b64table[5-1]='E'

image
提取出比对数据映射回去解个变表b64
exp:

print('1'*36)

enc = [0x00000008, 0x0000003B, 0x00000001, 0x00000020, 0x00000007, 0x00000034, 0x00000009, 0x0000001F, 0x00000018, 0x00000024, 0x00000013, 0x00000003, 0x00000010, 0x00000038, 0x00000009, 0x0000001B, 0x00000008, 0x00000034, 0x00000013, 0x00000002, 0x00000008, 0x00000022, 0x00000012, 0x00000003, 0x00000005, 0x00000006, 0x00000012, 0x00000003, 0x0000000F, 0x00000022, 0x00000012, 0x00000017, 0x00000008, 0x00000001, 0x00000029, 0x00000022, 0x00000006, 0x00000024, 0x00000032, 0x00000024, 0x0000000F, 0x0000001F, 0x0000002B, 0x00000024, 0x00000003, 0x00000015, 0x00000041, 0x00000041]

changed_b64_table = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/"
ord_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"


ct = ""
for c in enc:
    try:
        ct += ord_table[c-1]
    except:
        pass
print(ct)
# H6AfGzIeXjSCP3IaHzSBHhRCEFRCOhRWHAohFjxjOeqjCU

image

de1ctf{E_L4nguag3_1s_K3KeK3_N4Ji4}

posted @ 2024-02-06 18:29  N0zoM1z0  阅读(36)  评论(0)    收藏  举报