刚刚结束的405杯,这个奶龙大冒险是我觉得出的很好的一道题
首先走迷宫,前面几层正常走,最后一层先去赌博输光光,然后救个奶龙溢出金币数量变为负数,强转为无符号数时是很大的数字,进而通过最后一层,能走到gift函数得到libc地址。
存档函数存在栈溢出,通过第一次存档名布置数据可以影响到第二次read时对名字长度的验证,进而控制读入名字的长度。
之后利用存档函数的栈溢出打ROP即可。值得注意的是libc版本不知道,用libcsearcher试一试最后发现是2.35,然后自己下载一个同样版本的打就行。
完整exp: