writeup_guessNum_pwn

咱就是说,还得会c语言我是没想到的,枯了

先check一下:

image-20220227125713760

好家伙,一片绿,哈人,没法覆盖返回地址了。

先扔ida:

image-20220227125511131

循环产生随机数,然后猜数字,v7似乎可以做一个溢出

image-20220227125816761

然后就需要一点点c语言知识,在上面的区域中,seed变量的值是可以覆盖的,而seed是什么呢?

在使用rand()函数时,首先需要使用srand设定一个seed,只有随机生成了seed每一次rand()顺序生成的数列才是不同的,若seed相同时,生成的随机数列也是相同的。

我不信,小试一下:

image-20220227154839418

我信了。。。

按照逆向的思路,我们可以看看随机的seed是如何生成的,进入sub_BB0函数:

image-20220227155010434

果然不是逆向,是在本地文件中读取的,那没事了。

所以只要覆盖seed,并且用seed在本地生成随机数,然后再传过去就可以了,创作一个脚本:

image-20220227155955030

顺便学一下python中调用c语言。

cyberpeace{5df2a9bab4fa085d9359d4c9722f857c}