首页
社区
课程
招聘
1
看雪CTF2019Q2-第6题 消失的岛屿
发表于: 2019-6-18 23:58 2965

看雪CTF2019Q2-第6题 消失的岛屿

2019-6-18 23:58
2965

base64

1
2
3
4
5
6
7
8
.text:004016A4                 call    _base64_encode
.text:004016A9                 mov     dword ptr [esp+48h], offset aNgvH1f4s32pHkq ; "!NGV%,$h1f4S3%2P(hkQ94=="
.text:004016C0                 call    _strcmp
 
.rdata:00404064 aTuvwxtulmnopqr db 'tuvwxTUlmnopqrs7YZabcdefghij8yz0123456VWXkABCDEFGHIJKLMNOPQRS9+/',0
 
字符映射
.text:004013C0 ; char __cdecl charEncrypt

1
2
3
4
5
6
7
8
.text:004016A4                 call    _base64_encode
.text:004016A9                 mov     dword ptr [esp+48h], offset aNgvH1f4s32pHkq ; "!NGV%,$h1f4S3%2P(hkQ94=="
.text:004016C0                 call    _strcmp
 
.rdata:00404064 aTuvwxtulmnopqr db 'tuvwxTUlmnopqrs7YZabcdefghij8yz0123456VWXkABCDEFGHIJKLMNOPQRS9+/',0
 
字符映射
.text:004013C0 ; char __cdecl charEncrypt

脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import base64
import binascii
import string
 
 
def test():
    old_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    new_chars = 'tuvwxTUlmnopqrs7YZabcdefghij8yz0123456VWXkABCDEFGHIJKLMNOPQRS9+/'
    chars_map = ['']*256
    for in range(len(new_chars)):
        = ord(new_chars[i])
        if 0x41 <= v <= 0x5A:
            = 0x9B - v
        elif 0x61 <= v <= 0x7A:
            = - 0x40
        elif 0x30 <= v <= 0x39:
            = + 0x32
        elif == 0x2B:
            = 0x77
        elif == 0x2F:
            = 0x79
        chars_map[v] = new_chars[i]
    = '!NGV%,$h1f4S3%2P(hkQ94=='
    b64 = ''
    for in range(len(s)):
        b64 += chars_map[ord(s[i])]
    b64 += '=='
    print binascii.a2b_base64(b64.translate(string.maketrans(new_chars, old_chars)))
    return
 
 
test()


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2023-1-25 03:00
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册