wustctf2020_number_game
- 例行检查,32位程序,开启了canary和nx
- 本地试运行一下,看看大概的情况
- 32位ida载入,检索字符串的时候找到了后门,shell_addr=0x80485cb
- 找到关键函数
绕过第9行的if即可获取shell,v1是无符号整型,我们输入数据后会转换成补码(负数的补码=原码取反+1)存放在内存中,32位int型表示的范围是-2147483648~2147483647
,我们这边应该先输入一个负数,然后去掉它前门的负号,变成正的,然后计算它的补码,该补码要大于0。-2147483648的补码是0x80000000,它取反加一之后仍然是0x80000000,因此这边输入-2147483648