PWN
文章平均质量分 89
MillionSky
这个作者很懒,什么都没留下…
展开
-
SROP基本原理和利用
1 概述SROP: Sigreturn Oriented Programming ,系统Signal Dispatch之前会将所有寄存器压入栈,然后调用signal handler,signal handler返回时会将栈的内容还原到寄存器。 如果事先填充栈,然后直接调用signal handler,那在返回的时候就可以控制寄存器的值。2 资源1. Framing Signals—A Return...原创 2018-03-19 10:06:09 · 6909 阅读 · 0 评论 -
动态链接库劫持--libc
动态链接库劫持--libc1 概述动态链接库劫持,本文是做这个题目的笔记:Exploit Exercises - Nebula 15。2 Exploit Exercises - Nebula 152.1 问题描述根据题目的要求,我们需要用strace命令观察flag15的系统调用情况。 最终目标是通过这个程序拿到flag。 整个过程都是在调用一个叫libc.so.6的动态链接库:level15@n...原创 2018-04-04 16:35:52 · 3714 阅读 · 1 评论 -
Ptmalloc堆概述-Brk系统调用
1 brk1.1 program break未初始化数据段末尾后的第一个位置;等于或超过此地址的地方均不可访问;增加program break可以为进程分配内存;减少program break则释放内存;初始时,堆的起始地址 start_brk 以及堆的当前末尾 brk 指向同一地址。根据是否开启ASLR,两者的具体位置会有所不同l 不开启 ASLR 保护时,start_brk 以及 brk 会指...原创 2018-05-10 14:16:54 · 767 阅读 · 0 评论 -
ptmalloc堆概述-mmap系统调用
ptmalloc堆概述-mmap系统调用1 概述malloc 会使用 mmap来创建独立的匿名映射段。匿名映射的目的主要是可以申请以0填充的内存,并且这块内存仅被调用进程所使用。 Malloc分配大于128KB时,直接使用mmap进行分配。2 Mmap2.1 API#include <sys/mman.h>void *mmap(void *addr, size_t length, in...原创 2018-05-10 14:24:13 · 699 阅读 · 0 评论 -
ptmalloc堆概述-多线程支持
ptmalloc堆概述-多线程支持1 多线程支持在原来的 dlmalloc 实现中,当两个线程同时要申请内存时,只有一个线程可以进入临界区申请内存,而另外一个线程则必须等待直到临界区中不再有线程。这是因为所有的线程共享一个堆。在glibc的ptmalloc2实现中,比较好的一点就是支持了多线程的快速访问。在新的实现中,所有的线程共享多个堆。 Ptmalloc2中,两个线程同时调用malloc时,每...原创 2018-05-10 14:33:00 · 1074 阅读 · 0 评论 -
ptmalloc堆概述
ptmalloc堆概述1 概述堆的概念在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。 堆管理器我们一般称管理堆的那部分程序为堆管理器。· dlmalloc – General purpose allocator· ptmalloc2 – glibc· jemalloc – FreeBSD and ...原创 2018-05-10 14:42:04 · 1543 阅读 · 0 评论 -
ptmalloc堆数据结构
1 概述在 glibc-2.3.x. 之后,glibc 中集成了ptmalloc2。 可以下载glibc源码查看ptmallochttp://ftp.gnu.org/gnu/glibc/ 查看glibc版本millionsky@ubuntu-16:~/tmp$ ldd --versionldd (Ubuntu GLIBC 2.23-0ubuntu9) 2.23 这里主要参考:https://ctf...原创 2018-05-10 14:53:41 · 773 阅读 · 0 评论 -
ptmalloc堆实现
1 概述在 glibc-2.3.x. 之后,glibc 中集成了ptmalloc2。 可以下载glibc源码查看ptmallochttp://ftp.gnu.org/gnu/glibc/ 查看glibc版本millionsky@ubuntu-16:~/tmp$ ldd --versionldd (Ubuntu GLIBC 2.23-0ubuntu9) 2.23 这里主要参考:https://ctf...原创 2018-05-10 15:08:05 · 1243 阅读 · 0 评论 -
ptmalloc heap unlink exploit
1 概述Heap unlink exploit 前提是要对ptmalloc堆有一定的了解。2 Unlink宏Unlink:用来将一个双向 bin 链表中的一个 chunk 取出来参数:AV:arena header(malloc_state)P :将要unlink的chunkBK:P后面的chunk <--FD:P前面的chunk -->具体过程如下:将chunk从FD/B...原创 2018-05-21 14:29:11 · 653 阅读 · 1 评论 -
传统栈溢出-(Exploit-exercise-protostar-stack5)
1 概述传统栈溢出有这些特点:没有ASLR没有NX 题目来自https://exploit-exercises.com/protostar/stack5/ 本来觉得很简单的,还是纠结了半天。Exploit-exercise-protostar-stack5的第一个坑就是setuid程序的core dump没有打开。需要这样操作:su - root #password:godmodeecho 1 &...原创 2018-04-11 13:19:55 · 810 阅读 · 0 评论 -
Exploit-exercises
1 概述Exploit-Exercise是一个Linux平台下漏洞挖掘、分析的练习平台。网址为:https://exploit-exercises.com官方提供了个很多虚拟机、文档、挑战题目,用于学习各种计算机安全问题,如权限提升、漏洞分析、Exploit开发、调试、逆向工程和通用的网络安全问题。 目前有几个板块:Nebula、Protostar、Fusion、Main Sequence、Clo...原创 2018-04-09 14:34:51 · 2088 阅读 · 0 评论 -
SROP 32位DEMO
1 概述开始学习SROP技巧。希望找到一个简单的demo来了解SROP。找了很多资料,但都没有实作成功。主要参考这篇文章1. Sigreturn Oriented Programming攻击简介https://www.anquanke.com/post/id/85810直接拿原文中的程序测试,没有复现成功,主要的问题有:1. VDSO的爆破不成功,GDB调试发现对应的位置没有找到对应的指令:sig...原创 2018-03-19 10:15:45 · 537 阅读 · 1 评论 -
SROP 32位--Fun with SROP Exploitation
1 概述本文是这篇文章的笔记:Fun with SROP Exploitationhttps://v0ids3curity.blogspot.jp/2015/06/fun-with-srop-exploitation.html 环境:Ubuntu 16.042 程序nasm -felf32 vuln_s.asmld vuln_s.o -melf_i386 -o vuln_s millionsky@...原创 2018-03-19 10:24:28 · 401 阅读 · 0 评论 -
SROP 64位-smallest(2017429ctf.ichunqiu)
1 概述360春秋杯”国际网络安全挑战赛Challenge - smallest (pwn 300) - 429 ichunqiu ctf 2017http://2017429ctf.ichunqiu.com/competition/index 64位SROP很好的练习题。2 程序分析millionsky@ubuntu-16:~/tmp/smallest$ objdump -d smallest ...原创 2018-03-19 10:45:04 · 1227 阅读 · 0 评论 -
SROP 32位VDSO的爆破
1 概述https://www.anquanke.com/post/id/85810Sigreturn Oriented Programming攻击简介这篇文章描述了32位vdso的爆破本文是对它的复现和笔记。2 32位VDSO的爆破2.1 原理32位的VDSO只有1个字节是随机的vdso_range = range(0xf7700000, 0xf7800000, 0x1000)2.2 程序#in...原创 2018-03-19 11:05:21 · 630 阅读 · 2 评论 -
VDSO与vsyscall
1 概述vsyscall和vDSO是用于加速某些系统调用的两种机制。 传统的int 0x80有点慢, Intel和AMD分别实现了sysenter/sysexit和syscall/ sysret, 即所谓的快速系统调用指令, 使用它们更快, 但是也带来了兼容性的问题. 于是Linux实现了vsyscall, 程序统一调用vsyscall, 具体的选择由内核来决定. 而vsyscall的实现就在VD...原创 2018-03-19 11:20:21 · 7385 阅读 · 1 评论 -
Return-to-VDSO
1 概述本文是这篇文章的笔记:Return to VDSO using ELF Auxiliary Vectorshttps://v0ids3curity.blogspot.jp/2014/12/return-to-vdso-using-elf-auxiliary.html2 代码section .textglobal _startjmp _startvuln:sub rsp, 8mov rax,...原创 2018-03-19 11:37:54 · 1117 阅读 · 0 评论 -
附加向量
1 附加向量1.1 附加向量Auxiliary vector是一种机制,内核的ELF binary loader使用附加向量在程序执行时传递某些信息到用户空间。 #include <sys/auxv.h>unsigned long getauxval(unsigned long type); sys/auxv.h#define AT_NULL 0 ...原创 2018-03-19 13:05:54 · 579 阅读 · 0 评论 -
Linux系统调用
1 概述相比Intel支持的快速系统调用指令sysenter/sysexit,AMD对应的是syscall/sysret,不过现在,Intel也兼容这两条指令。 测试环境:Ubuntu 12.04Ubuntu 16.04 642 传统系统调用int 0x80只用于32位系统,64位系统上不起作用; 系统调用号和返回结果EAX指定要调用的函数(系统调用号)EBX传递函数的第一个参数ECX传递函数的第...原创 2018-03-19 13:19:45 · 4821 阅读 · 0 评论 -
classic heap unlink exploit(protostar Heap3)
1 概述https://exploit-exercises.com/protostar/heap3/本题展示了classic heap unlink exploit。 前置技能:要了解ptmalloc堆;熟悉classic heap unlink exploit。2 题目Heap3.c#include <stdlib.h>#include <unistd.h>#includ...原创 2018-05-23 10:34:53 · 710 阅读 · 1 评论