这题说难不难,就是比较麻烦,经过这个题目,我有一个想法,就是把一些特定情境的exp写出来,只需要传参就可以不断复用,可以提高效率吧
分析一下这道题目
最后一个myread函数是一个典型的栈溢出,之前的有两个输入点,第一个很明显可以数组越界,第二个就是输入一个数,并v4离栈底太远了,可以估计他不会溢出,来个前置知识:rand是通过srand根据seed来生成的伪随机代码,若是seed不变则可知道随机数序列,但是题中seed很明显根据时间在变,随机数序列不确定,这样的话后面的while循环需要猜中99次随机数才能到达myread函数,其实我一开始想的是想办法直接跳过这一段循环,但是很明显没什么办法,那么就一定要经过这段循环,所以一定是要弄出确定的随机序列,就是让seed确定,再联想到第一个输入可以数组越界,思路就明晰了
溢出覆盖seed使其成为我们想要的,确定随机序列,通过while循环检测,到达myread函数,栈溢出,ret2libc(哎,这个ret2libc好难写,我还是直接照搬的我以前hgame-mini写过的,所以才有开头的想法,这种就是可复用代码的场景,需要自己编写一个自己理解的工具库)
其实我不会python,我好多都是让gpt帮我写的,我真没学过python,不会文件操作啥的,请原谅我,exp如下,第一个是生成序列的c代码(这个是我写的,我只会c语言,哎)
上述有注释的是鸡老师(鸡屁d)帮我写的hhh