dlreslove
与ELF文件动态链接过程相关,linux中,程序使用dl_runtime_reslove(link_map_obj,reloc_offset)来对应链接的函数进行重定位。如果我们可以控制相关的参数及其对应地址的内容岂不是可以控制解析到哪个函数? 基本原理 当第一次call或者jmp一个动态链接库中函数时,如图(puts为例): 并不会直接跳转到li…
|
50
|
|
704 字
|
4 分钟
SROP
原理 程序中断返回时会执行sigreturn系统调用,为该进程恢复之前保存的上下文,但是由于没有严格检查,并且上下文是保存在用户空间地址中的,所以我们可以轻易伪造上下文内容,可借此劫持程序流。 需要注意的是,在构建ROP链利用的时候我们要满足以下要求: 能调用执行sigreturn 有足够的空间塞下整个sigal frame srop的手法不算…
|
37
|
|
631 字
|
5 分钟
libc
基本原理 控制函数执行libc中的函数,通常需要先泄露libc文件版本和加载位置,然后通过相对偏移找到并执行相关函数或利用相关gadgets。 原理 一个ELF文件想要调用文件外定义的函数需要先进行加载和链接。链接根据是否是编译时完成分为非动态链接和动态链接。通常来说,我们做的libc的题是动态链接的。静态链接的优点是程序与glibc版本无关,在各…
|
40
|
|
484 字
|
2 分钟
syscall
基本原理 利用系统调用get shell的一种漏洞利用方式 原理 控制程序执行系统调用,需要有syscall命令,并且可以控制rax寄存器以及传参寄存器。 实际上在编写shellcode的时候我们大部分也是通过系统调用来实现函数调用 利用手法 一般而言,程序中很少出现syscall的gadgets,除非是特殊的编译方式或者特地添加了gadgets。…
|
38
|
|
213 字
|
1 分钟内
ret2text
基本原理 在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。 gadgets 通常是以 ret 结尾的指令序列,通过这样的指令序列,我们可以多次劫持程序控制流,从而运行特定的指令序列,以完成攻击的目的。 ret2text即控制程序执行.text段的代码(程序自身代码)。有时候我…
|
32
|
|
374 字
|
2 分钟
Shellcode
基本原理 利用系统调用get shell的一种漏洞利用方式 原理 控制程序执行系统调用,需要有syscall命令,并且可以控制rax寄存器以及传参寄存器。 实际上在编写shellcode的时候我们大部分也是通过系统调用来实现函数调用 利用手法 一般而言,程序中很少出现syscall的gadgets,除非是特殊的编译方式或者特地添加了gadgets。…
|
45
|
|
213 字
|
1 分钟内