题目:0ctf2018-babystack
1.检查保护机制:
可以看到程序只提供了NX保护。
2.在IDA中进行反编译,发现一个可读的位置,存在栈溢出漏洞,可能可以利用:
3.使用peda计算read位置的偏移:
得到read位置距离返回地址的偏移为44,比read的长度0x40小,说明栈溢出漏洞可直接被利用。
4.查看文件ELF表
通过elf表中查看得知程序中不存在system函数,无法直接跳转;也不存在输出函数,无法打印got表地址。
5.查看vmmap
通过vmmap可以看到bss段可写,故尝试dl_resolve攻击方式。
6.构造栈
7.编写POC
from pwn import *
name = './babystack'
p = process(name)
elf= ELF(name)
#获取原地址
rel_plt_addr = elf.get_section_by_name('.rel.plt').header