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}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值