2017nsctf RE

第一次不看任何参考资料的情况下(关键是在网上找writeup也找不到闭嘴)做出一道逆向题,特此记录

直接拖进IDA

找到关键字符串Congrs,点进去看函数

理解下函数逻辑:

v13=10->循环10次

Congras后面的v4应该就是结果

要使v14!=0,就要是37行中v9==v12^v8

v12的形成过程就是循环i次计算

v8可以理解成v4,就是结果

v9是byte_6B4270字符串,进去看看是什么

好了,现在可以写脚本了:

cmp=[0x5F,0xF2,0x5E,0x8B,0x4E,0x0E,0xA3,0xAA,0xC7,0x93,
     0x81,0x3D,0x5F,0x74,0xA3,0x9,0x91,0x2B,0x49,0x28,
     0x91,0x67]
string = [0]*22
v8 = ''
for i in range(22):
        v12 = 0
        for j in range(0,i+1):
                v12 = 1828812941*v12+12345
                v12 =v12 % 256
        v8 += chr(cmp[i]^v12)
print(v8)

主义V12前是(unsigned __int8),所以要%256,也符合ASCII码的范围

得到flag{d826e6926098ef44}

猜你喜欢

转载自blog.csdn.net/snowleopard_bin/article/details/79594041
re
今日推荐