XCTF 进阶 RE dmd-50、Shuffle、re2-cpp-is-awesome
一天一道CTF题目,能多不能少
复习有什么意思吗?还不如做两个题快乐
dmd-50
下载文件,直接IDA打开(64)
找到主函数,发现一串奇怪的值:
得到:780438d5b6e29db0898bc4f0225935c0
类似于MD5
经过MD5解码得到:b781cbb29054db12f88f08c6e161c199
提交,正确~~
Shuffle
一开始看题目以为挺复杂的,结果和上一道题目一样~
IDA打开(32)
找到主函数:
提交得到的字符串:SECCON{Welcome to the SECCON 2014 CTF!}
正确~~
re2-cpp-is-awesome
用IDA(64)打开文件找到主函数:
好乱的代码啊~~ 头皮发麻
直接用shift+F12查看字符串:
一个下次祝你好运,一个你现在应该有flag了~
外加一串奇怪的字符串
接下来就在想,下次好运和已经有flag,,,,肯定是要我们输入,然后进行判断
接下来就找关键点了~
最后找到了:
然后就来看这个if判断~
发现off_6020A0是那一串奇怪的字符
dword_6020C0是一串数据
这样不好看,直接看16进制的那个窗口:
又因为align 8,8字节对齐
所以dword_6020C0的数据是:'24','0','5','36','65','7','27','26','2d','1','3','0','d','56','1','3','65','3','2d','16','2','15','3','65','0','29','44','44','1','44','2b'
16进制表示
回过头来看if,发现dword_6020C0表示的是off_6020A0的下标
直接编写脚本:
s = "L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t"
x = ['24','0','5','36','65','7','27','26','2d','1','3','0','d','56','1','3','65','3','2d','16','2','15','3','65','0','29','44','44','1','44','2b']
flag = ""
for i in x:
i = int(i,16)
flag += s[i]
print(flag)
最后得到:ALEXCTF{W3_L0v3_C_W1th_CL45535}
提交,正确~~