format string。由于还是exit,所以与上题一样,修改got.
由于argc必须为0,所以要另外写一个c程序,用exec。我们把argv设为{NULL}, 要修改的地址放到envp[0], shellcode放到envp[1], format string放到envp[2]。这样printf就会打印envp[2]
还是用寻找A的方式,大概确定了format string的内容大概是第98个参数。exit在plt的地址是0x0804a008,经过一番调整,确定了各个环境变量的长度,然后确定SHELLCODE的地址和format的具体形式。
代码如下