![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ROP
文章平均质量分 88
p0int3r
这个作者很懒,什么都没留下…
展开
-
浅谈rop-ret2libc原理以及解答-以攻防世界level3为例
栈溢出-rop-libc 0x01、got表和plt表与动态链接、绑定延迟(重点理解) GOT概述 1、当在程序中引用某个共享库中的符号时,编译链接阶段并不知道这个符号的具体位置,只有等到动态链接器将所需要的共享库加载进内存后,也就是在运行阶段,符号的地址才会最终确定。因此,需要有一个数据结构来保存符号的绝对地址,这就是GOT表的作用,GOT表中每项保存程序中引用其他符号的绝对地址。这样,程序就可以通过引用GOT表来获得某个符号的地址 2、在X86结构中,GOT表的前三项保留,用于保存特殊的数据结构地址,其原创 2021-08-05 14:32:28 · 532 阅读 · 0 评论 -
浅谈ROP-ret2libc原理-题目源于[ctfwiki]
rop:在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。–[ctfwiki] 传送门 之前提到的ret2syscall,提到了静态链接,而libc主要利用了动态链接。 0x01 知识点: 简单来说,静态链接就是直接在原有的基础之上进行访问,而动态链接就是直接放上一个链接来访问。 1.plt表和got表 拿一个c语言编写的printf函数为例,当调用printf函数时,先去plt表和got表寻找printf函数的真实地址。plt表指向原创 2020-12-18 00:13:20 · 635 阅读 · 0 评论 -
basic ROP-浅谈ret2syscall原理[ctf-wiki]
一道简单的ctf-wiki上的基本ROP题目。 原理:控制程序执行系统调用,获取 shell。 传送门 0x01 预备知识: 系统调用通过 int 80h 实现,应用程序调用系统调用的过程是: 1.把系统调用的编号存入 EAX; 2.把函数参数存入其它通用寄存器; 3.触发 0x80 号中断。 execve函数: 详见:execve函数 0x02 解题步骤: 首先检查: ida打开之后,没有system函数,只有binsh关键字,开启NX保护。 需要构造execve(“/bin/sh”, 0,0); 其原创 2020-12-17 00:48:06 · 265 阅读 · 0 评论