buu [V&N2020 公开赛]strangeCpp

拖入ida,静态调试一下,本来想动调的,发现一直缺dll。没办法,只能头铁,静态
找到主函数,然后并没有发现什么,找了半天,没结果,后面也是看了大佬wp,才找到解决方式,感觉这种只能通过动调来找到关键函数,靠这种找字符串的,有点不靠谱,不过这种在没思路的情况下,是真的香。
在这里插入图片描述
先打印出welcome,后面一堆没啥用的,还有个函数检查cpu数量的。。。。,然后这种没思路的情况,感觉还是从出题人的角度去考虑问题,不可能会无缘无故的,出现一个东西,所以找到了一个字符串,查看它的引用
还是找到了,关键函数,
在这里插入图片描述
这函数逻辑很明显了,找一个数,经过一个函数处理返回值等于607052314,同时这个数又小于14549743,爆破就完事,头铁

v8=0
for i in range(14549743):
    tmp=(((i<<8)^(i>>12))*291)&0xffffffff
    if tmp==607052314:
        v8=i
        break

a=[0x26, 0x2C, 0x21, 0x27, 0x3B, 0x0D, 0x04, 0x75, 0x68, 0x34,
  0x28, 0x25, 0x0E, 0x35, 0x2D, 0x69, 0x3D, 0x6F, 0x6D, 0x00]
print(v8)
for j in range(17):
    print(chr((v8^a[j])&0xff),end="")







在这里插入图片描述
在线解或者自己写个md5加密都是可以的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值