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加密都是可以的

原文地址:https://www.cnblogs.com/YenKoc/p/12779877.html