美文网首页
栈溢出 ret2dl_resolve

栈溢出 ret2dl_resolve

作者: fantasy_learner | 来源:发表于2018-12-12 14:56 被阅读0次

前置知识:函数执行流程

linux系统中 为了提高动态链接装载时的效率 ,elf文件会采取一种叫做延迟绑定(lazy binding)的技术,也就是当我们位于动态链接库的函数被调用的时候,程序才会重定位 函数的偏移 , 修改got表 ,下面简单介绍这个机制的实现过程,主要使用dl_runtime_resolve来实现

详细介绍

下面 写下dl_runtime_resolve 函数 调用的关键数据结构
按照 dl_runtime_resolve 的调用顺序

.rel.plt

  • <ii | r_offset , r_info
  • r_offset 为修改的指令地址
  • r_info 中 高24位是目标指令在动态符号表的索引 , 低8位 是 属性

.dynsym

  • <iiii | st_name , st_value , st_size , st_info
  • st_name 是 符号名在 .dynstr表中的偏移
  • st_info 高28位 为符号绑定信息 , 低四位 是符号类型 ,目前使用的是 0x12 1 << 28 | 2 , 绑定信息为 全局符号 , 符号属性为 函数或其他可执行代码

.dynstr

  • 此表没有具体结构,由一个个字符串组成,以\0分隔

详细介绍见代码注释
例子 : [Xman] level4

ret2dl_resolve_manual


使用 roputils 模块 进行 ret2dl_resolve
例题 : 0ctf - babystack

  • file : 32位 ,动态链接
  • checksec : nx
  • info : 这题因为只调用了read函数 , 无法leak,所以需要使用 ret2dl_resolve,但是这题的溢出长度有限,所以需要将两次溢出 才能完成全部动作, 第一次读入相关信息,第二次调用dl_runtime_resolve 并且传入参数

ret2dl_resolve_tool

相关文章

  • 栈溢出 ret2dl_resolve

    前置知识:函数执行流程 linux系统中 为了提高动态链接装载时的效率 ,elf文件会采取一种叫做延迟绑定(laz...

  • 浅说iOS为什么会上栈溢出

    简介 本文介绍了如下内容 栈的概念 为什么会发生栈溢出 栈溢出的几种栗子 怎么预防和发现栈溢出。 什么是栈? 从数...

  • 栈溢出简易指南

    栈 pwn 主题: 基本栈溢出 针对缓存区溢出防护的对策 shellcode 栈溢出的最终目的是执行shellco...

  • JVM

    1、一般什么情况会发生栈溢出、堆溢出 栈溢出(StackOverflowError) 1、栈是线程私有的,他的生命...

  • Canary机制及绕过策略-格式化字符串漏洞泄露Canary

    Canary主要用于防护栈溢出攻击。我们知道,在32位系统上,对于栈溢出漏洞,攻击者通常是通过溢出栈缓冲区,覆盖栈...

  • 2019-04-06 递归函数

    栈溢出

  • 缓冲区溢出提纲

    缓冲区溢出简单的来讲分为两种 栈溢出 堆溢出 那么什么是栈什么是堆呢 在这里简单谈一下对于堆和栈的理解 : 栈: ...

  • 无题-_-

    浅谈缓冲区溢出之栈溢出<上>

  • 栈溢出

    栈中压入数据栈顶指针地址变小 pop数据栈顶指针地址变大 也就是说栈底指针地址大于栈顶地址 EIP:扩展指令指针。...

  • 栈溢出

    function runStack (n) {if (n === 0) return 100;return run...

网友评论

      本文标题:栈溢出 ret2dl_resolve

      本文链接:https://www.haomeiwen.com/subject/ghtphqtx.html