你真的是大学生吗?
用ida打开
无法反汇编出伪代码,只能从汇编代码下手。利用chatgpt得到汇编代码大概意思
其实就是将输入的字符串与后一位异或,最后再比较。写出脚本并运行
v = [0x76, 0x0E, 0x77, 0x14, 0x60, 0x06, 0x7D, 0x04, 0x6B, 0x1E,
0x41, 0x2A, 0x44, 0x2B, 0x5C, 0x03, 0x3B, 0x0B, 0x33, 0x5]
s = ''
for i in range(len(v)-1):
v[i] = v[i+1] ^ v[i]
s += chr(v[i])
s += chr(v[len(v)-1] ^ v[0])
print(s)
xyctf{you_know_8086}
聪明的信使
32位无壳,拖入ida分析
输入的flag经过encrypt加密后与字符串相等,跟进encrypt函数
如果是大写之字母就进行v3 = (v3 + 9 - 65) % 26 + 65;如果是小写字母就进行v3 = (v3 + a9- 97) % 26 + 97;反过来对已知字符串进行第一个运算时可按结果分为两种,进行第二种运算时亦可分为两种,共可分为四种情况解密,脚本如下:
喵喵的flag碎了一地
64位无壳,用ida64打开
根据提示我们需要先找可疑字符串,按shift+F12
第一行是flag的第一段,第二行又是新提示,找到该句所在的函数
依据main函数第二条可知该函数名是第二段,依据这句话的意思要我们交叉引用,对选定该函数交叉引用
跟进第一个函数
把这段代码直接复制到Devc++里运行出第三段,到这里获得的flag是flag{My_fl@g_h4s_br0ken_4parT_Bu7_Y0u_c@n_这一句话似乎提到了被打散成了4段,而且这段字符没有”}“出现,不像完整的flag,猜测还有第四段,伪代码里面没有就去汇编代码里面找
这是最后一段,所以最后flag是flag{My_fl@g_h4s_br0ken_4parT_Bu7_Y0u_c@n_f1x_1t!}