buu练题记录16

0x00 [羊城杯 2020]easyre

oxoo1 查壳

无壳,64位程序,用IDA64打开

0x02 IDA64

用ida分析可以轻松发现加密的字符串以及验证模式

三次比较简单的加密

0x03 exp

import base64
from string import digits, ascii_lowercase, ascii_uppercaseflag = ''
str2 = "EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG"# 凯撒解密
for i in str2:if i in digits:flag += digits[(digits.index(i) - 3) % 10]elif i in ascii_lowercase:flag += ascii_lowercase[(ascii_lowercase.index(i) - 3) % 26]elif i in ascii_uppercase:flag += ascii_uppercase[(ascii_uppercase.index(i) - 3) % 26]else:flag += iprint(flag)# 置换的复位  2,0,3,1
str1 = flag[13:26] + flag[39:52] + flag[0:13] + flag[26:39]
print(str1)flag = base64.b64decode(str1.encode())
print(flag)

得到flag:

0x10 [FlareOn1]Bob Doge

0x11 分析&查壳

很离谱啊,还给了安装程序,破解安装后的程序,现查壳吧,发现是32位的文件(事实上调试的时候提醒我是64位的程序……)

0x12 调试

简单运行程序,好家伙,真·狗头。发现按钮事件是关键

使用dnspy工具打开文件,找到关键函数,在这个函数的起始下断点,然后动调,步过到text3:

得到flag