刘功瑞的博客

有一天你突然惊醒,发现这一切,都只不过是一场梦。

攻防世界 XCTF Reverse 流浪者 Writeup

image.png

看雪论坛出的题目 很不错。

image.png

Str1是从aAbcdefghiabcde这个变量中获取到的,对应的角标是上一个程序传过来的,然后和KanXueCTF2019JustForhappy对比,正确则说明flag正确。

image.png

先获取各角标的值为[19, 0, 27, 59, 44, 4, 11, 55, 14, 30, 28, 29, 37, 18, 44, 42, 43, 14, 38, 41, 7, 0, 39, 39, 48]

之前一直看不明看 a1+4*v4,代表什么,后来才知道这个代表地址的偏移取值,每4字节取一个值,其实就相当于循环字符串的每一个值。

然后看前面的算法

image.png

逆推一下就可以得到flag

str = "KanXueCTF2019JustForhappy"
code = "abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ"
arr = []
for i in str:
    for k in range(len(code)):
        if i == code[k]:
            arr.append(k)
print arr

flag = []
for i in arr:
    if i <= (57 - 48) and i >= (48 - 48):
        flag.append(i + 48)
    else:
        if i <= (122 - 87) and i >= (97 - 87):
            flag.append(i + 87)
        else:
            if i <= (90 - 29) and i >= (65 - 29):
                flag.append(i + 29)

print flag
result = ''
for i in flag:
    result += chr(i)
print result
#[19, 0, 27, 59, 44, 4, 11, 55, 14, 30, 28, 29, 37, 18, 44, 42, 43, 14, 38, 41, 7, 0, 39, 39, 48]
#[106, 48, 114, 88, 73, 52, 98, 84, 101, 117, 115, 116, 66, 105, 73, 71, 72, 101, 67, 70, 55, 48, 68, 68, 77]
#j0rXI4bTeustBiIGHeCF70DDM
#flag{j0rXI4bTeustBiIGHeCF70DDM}


发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

Copyright www.liugongrui.com.All Rights Reserved.