buuctf pwn bjdctf_2020_babyrop
1.checksec

- 运行一下

2.IDA分析

- 这里调用了vuln函数
- 我们接着看一下vuln函数

- buf只有32,但是我们可以写64
- 很明显的溢出
- 本程序没开PIE
- 没开canary
- 再看一下有没有后门函数

- 没有"/bin/sh"
- 没有system()函数
- 那么就要通过泄露函数地址来计算libc的基地址了
- 64位程序在传参的时候需要用到寄存器
- 当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。
- 当参数为7个以上时,后面的依次从 “右向左” 放入栈中。
- 设置rdi寄存器的指令
ropper

3.exp
from pwn import *
from LibcSearch

本文详细介绍了如何分析一个64位程序的缓冲区溢出漏洞,并利用ROP(Return-Oriented Programming)技术进行exploit。首先通过checksec检查程序的安全特性,发现未开启PIE和Canary,然后利用ida分析找到溢出点和关键函数。通过泄露puts函数地址找到libc基址,计算system和/bin/sh的地址,最终构造payload实现远程执行。整个过程展示了漏洞利用的基本步骤和技术细节。
最低0.47元/天 解锁文章
378

被折叠的 条评论
为什么被折叠?



