
PWN
文章平均质量分 97
PWN
_sky123_
这个作者很懒,什么都没留下…
展开
-
windows pwn 基础知识
在 Win10 和 Win Server2016 版本之前,只有一种堆类型 NT Heap在 Win10 和 Win Server2016 之后,引入了 Segment Heap(段堆)在之后版本中,除了 UWP 程序之外 一般都继续使用 NT Heap 进行堆管UWP(Universal Windows Platform)是 Win10 引入的一种新的应用程序开发模型,他们采用了一套共享的 API。所以采用 UWP开发的程序,可以在所有 Win10 设备上运行。原创 2023-06-21 09:26:51 · 5618 阅读 · 3 评论 -
LLVM PASS pwn
LLVM的核心是一个库,其设计了一种通用的LLVM IR,并提供一系列接口来操作LLVM IR,生成目标平台代码等等后端的功能.LLVM Pass就是遍历传入的IR并进行一些处理,在实现上,LLVM的核心库中存在一些Pass类,通过继承这些类并重载一些方法,就可以方便的处理传入的IRLLVM Pass的用处:在Pass遍历LLVM IR的同时,就可以非常方便的完成插桩,静态分析,机器无关的代码优化等等操作.下面列出了几个重要的命令行工具.llvm-asLLVM IRllvm-disllvm-asopt。原创 2023-03-22 22:27:28 · 803 阅读 · 0 评论 -
musl pwn
调试环境搭建debug_musl 可以源码调试。运行 setup.sh 将源码及相关动态链接库解压到根目录下 musl 文件夹下,用的时候只需要将对应版本的 libc.so 文件复制到目录下,然后利用 patchelf 运行如下命令修改可执行文件所依赖的 ld 为 libc.so 即可进行源码调试。patchelf --set-interpreter ./libc.so ./pwn另外该项目中的 build.sh 可以自动下载和编译 musl 到根目录下的 musl 文件夹中,建议在 ubuntu原创 2023-04-03 01:27:29 · 1273 阅读 · 0 评论 -
Chrome v8 pwn
它是⼀个多进程+IPC的程序, 不同的进程管理不同的内容,原创 2023-04-17 21:53:04 · 4308 阅读 · 0 评论 -
linux kernel pwn 内核利用
基础知识内核概述内核架构通常来说我们可以把内核架构分为两种:宏内核和微内核,现在还有一种内核是混合了宏内核与微内核的特性,称为混合内核。宏内核(Monolithic kernel),也译为集成式内核、单体式内核,一种操作系统内核架构,此架构的特性是整个内核程序是一个单一二进制可执行文件,在内核态以监管者模式(Supervisor Mode)来运行。相对于其他类型的操作系统架构,如微内核架构或混合内核架构等,这些内核会定义出一个高端的虚拟接口,由该接口来涵盖描述整个电脑硬件,这些描述会集合成一组硬原创 2023-05-17 21:54:25 · 2664 阅读 · 1 评论 -
linux kernel pwn 基础知识
驱动程序设备驱动文件系统驱动内核拓展模块LKMs 的文件格式和用户态的可执行程序相同,Linux 下为 ELF ,Windows 下为 exe/dll ,mac 下为 MACH-O ,因此我们可以使用 IDA 等工具来分析内核模块。模块可以被单独编译,但不能单独运行,它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程不同。模块通常用来实现一种文件系统,一个驱动程序或者其它内核上层的功能。原创 2023-05-22 21:44:36 · 3858 阅读 · 0 评论 -
linux kernel pwn 常用结构体
tty 设备在/dev下的一个伪终端设备ptmx。原创 2023-05-28 14:46:02 · 2160 阅读 · 0 评论 -
Qemu 逃逸基础知识
QEMU 与 KVM 的完整架构如下图所示。其中 VMX root 和 VMX non-root 都是 CPU 引入了支持硬件虚拟化的指令集 VT-x 之后出现的概念。虚拟机在 VMX root 模式和 VMX non-root 模式下都有 ring 0 到 ring 3 四个特权级别。原创 2023-06-12 20:34:25 · 2165 阅读 · 1 评论 -
QEMU 逃逸相关例题
实际上只能使用第二种方式,因为 PCI 设备内部会对访问的内存区域进行检查,不允许超过分配。的合法区间,因而我们只能通过第二种方式构造越界读写原语。上设置定时任务,不过时间设置为 -1 因此不会执行。函数定义如下,也就是说这里会将该定时任务时间设置为。位于 qemu 上,地址小于堆地址,而越界写。无法将下标设为负数,因此考虑其他方法。指向参数地址,从而实现任意命令执行。结构体的内容如下,其中。从前面的调试结果可以看到。实现虚拟机逃逸,由于。函数调用链如下,根据。的参数可知,最终会将。初始值为 1 ,而在。原创 2023-06-13 16:56:35 · 1270 阅读 · 1 评论 -
VMware 逃逸基础知识
运行在 VMM 上的程序必须和原始硬件运行一样,需要高效。大部分指令必须直接在真实的处理器上运行,而不需要解释每条指令VMM 必须完全控制硬件,任何 VM 不能穿越 VMM 直接控制硬件。原创 2023-06-19 07:17:09 · 3726 阅读 · 0 评论 -
windows pwn
附件下载链接程序保护如下,没有开 GS 保护。程序是一个简单的栈溢出:利用方法如下:这里有几个易错点:64 位栈溢出附件下载链接和 32 位的程序相似,不过这里溢出字节数较少,需要栈迁移。ORW如果题目开启了 保护禁用了 ,那么我们就需要采用 ORW 的方式获取 flag 。Windows 中的 ORW 示例代码如下,其中 和 位于 , 位于 。由于传递的参数过多 gadget 不好找并且会导致 ROP 过长,因此采取 修改内存属性写 shellcode 的方式 进行 OR原创 2023-07-13 10:49:30 · 1952 阅读 · 0 评论 -
linux pwn 基础知识
环境搭建虚拟机安装镜像下载网站为了避免环境问题建议 22.04 ,20.04,18.04,16.04 等常见版本 ubuntu 虚拟机环境各准备一份。注意定期更新快照以防意外。虚拟机建议硬盘 256 G 以上,内存也尽量大一些。硬盘大小只是上界,256 G 不是真就占了 256 G,而后期如果硬盘空间不足会很麻烦。基础工具vimsudo apt install vimgedit不习惯 vim 的可以使用 gedit 文本编辑器。sudo apt install geditgit原创 2023-08-11 17:12:36 · 3278 阅读 · 0 评论 -
linux 栈溢出
栈基础知识栈结构函数调用过程32位为例:KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲& \text{push a…函数参数传递32位程序普通函数传参:参数基本都压在栈上(有寄存器传参的情况,可查阅相关资料)。syscall传参:eax对应系统调用号,ebx、ecx、edx、esi、edi、ebp分别对应前六个参数多余的参数压在栈上。64位程序:普原创 2022-02-01 20:57:34 · 4216 阅读 · 0 评论 -
linux 格式化字符串漏洞
格式化字符串漏洞格式化字符串介绍常见格式化字符串函数函数基本介绍printf输出到stdoutfprintf输出到指定FILE流vprintf根据参数列表格式化输出到stdoutvfprintf根据参数列表格式化输出到FILE流sprintf输出到字符串snprintf输出指定字节数到字符串vsprintf根据参数列表格式化输出到字符串vsnprintf根据参数列表格式化输出指定字节到字符串常用格式化字符串形式%[p原创 2022-02-04 20:08:21 · 2329 阅读 · 0 评论 -
linux 堆利用
堆利用Unlink假设正常情况下,每申请一个 chunk 会保存一个指向该 chunk 内存块的指针。在 chunk1 中构造 fake chunk ,需要注意:为了绕过if (__builtin_expect(FD->bk != P || BK->fd != P, 0)) malloc_printerr(check_action, "corrupted double-linked list", P, AV);令:fake原创 2022-02-18 14:47:09 · 5456 阅读 · 1 评论 -
linux IO_FILE 利用
基本结构_IO_FILE_plus定义如下:struct _IO_FILE_plus{ FILE file; const struct _IO_jump_t *vtable;};包括一个结构体 file 和一个指针 vtable 。其中 vtable 指向一个函数指针表,很多 IO_FILE 的攻击都是围绕它展开的。_IO_FILE_plus 类型的结构有 _IO_2_1_stdin_ 、 _IO_2_1_stdout_ 和 _IO_2_1_stderr_ 。另外有头指针 _IO_原创 2022-03-29 16:17:32 · 44114 阅读 · 2 评论 -
linux 堆利用基础知识
ptmalloc2 是目前 Linux 标准发行版中使用的堆分配器。malloc 函数返回对应大小字节的内存块的指针。此外,该函数还对一些异常情况进行了处理:用以扩展 chunk,相邻 chunk 闲置且空间充足则会进行合并,否则会重新分配 chunk。即通过 realloc 我们可以完成对一个 chunk 的 free,也就是说在特殊情况下 realloc 是可以当作 free 使用的,其中,在size 为 0 的情况下,realloc 函数会调用 free 释放该 chunk。该函数在分配时会清空 ch原创 2022-07-13 20:23:01 · 3944 阅读 · 1 评论