Pwn
文章平均质量分 80
Fasthand_
喜欢学习,乐于创新
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆基础-glibc_malloc_threading
glibc_malloc_threading多线程支持linux早期使用dlmalloc作为默认分配器,在dlmalloc中只有一个线程能访问临界区(critical section),因为所有线程共享freelist的数据结构。在ptmalloc2中当两个线程同时调用malloc的时候,内存均会得以分配,因为每个线程都维护着单独的堆段,因此维护这些堆的freelist数据结构也是分开的。这种为每个线程维护单独的堆和空闲列表数据结构的行为称为每个线程领域(per thread arena)。分析案例原创 2021-11-16 22:18:22 · 570 阅读 · 1 评论 -
堆基础-glibc_malloc_system_call
Syscalls used by mallocbrkbrk通过增加程序中断位置(program break location / brk)从内核中获取内存(非零初始化),最初,堆段的起始(start_brk)和结束(brk)指向相同的位置。当ASLR关闭时,start_brk和brk将指向data/bss段的end(end_data)当ASLR打开时,start_brk和brk将指向data/bss段的end(end_data)加上随机的brk的偏移。分析示例/* sbrk and brk原创 2021-11-16 22:14:47 · 485 阅读 · 1 评论 -
堆基础-glibc_malloc_chunk
glibc_malloc_chunkchunk在程序执行中,我们称malloc申请的内存为chunk,用malloc_chunk来表示,当程序申请的chunk被free后,会被加入到对应的空闲管理队列。无论chunk的大小、状态如何,他们都是使用同一数据结构——malloc_chunk,只不过是表现形式有所不同。/* This struct declaration is misleading (but accurate and necessary). It declares a "view"原创 2021-11-16 22:13:29 · 778 阅读 · 0 评论 -
堆基础-glibc_malloc_bin
glibc_malloc_binBins用户释放掉的chunk不会立即归还系统,ptmalloc会同一管理heap和mmap映射区域中的chunk。当用户再一次请求分配内存的时候,ptmalloc分配器会试图在空闲的chunk中按照规则匹配一块内存给用户,从而避免频繁系统调用,降低内存分配的开销。具体实现中,ptmalloc 采用分箱式方法对空闲的 chunk 进行管理。首先,它会根据空闲的 chunk 的大小以及使用状态将 chunk 初步分为 4 类:fast bins,small bins,la原创 2021-11-16 22:11:13 · 3565 阅读 · 0 评论 -
堆利用-house_of_force-bamboobox题详解
bamboobox基本情况分析查看基本保护RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILEPartial RELRO Canary found NX enabled No PIE No RPATH No RUN原创 2021-11-14 21:24:02 · 529 阅读 · 0 评论 -
堆利用-house_of_force-top_chunk
house_of_forceHouse Of Force 是一种堆利用方法,如果一个堆 (heap based) 漏洞想要通过 House Of Force 方法进行利用,需要以下条件:能够以溢出等方式控制到 top chunk 的 size 域能够自由地控制堆分配尺寸的大小产生原因glibc中如果进行堆块分配的时候,如果所有空闲块都无法满足需求,那么就会从top chunk中分割出相应的大小作为堆块空间。但是当top chunck分配堆块的size值可以由用户控制的时候,top chu原创 2021-11-14 21:22:45 · 484 阅读 · 0 评论 -
use-after-free漏洞-hacknote
hacknote经典的use-after-free漏洞。原理简单的说,Use After Free 就是其字面所表达的意思,当一个内存块被释放之后再次被使用。但是其实这里有以下几种情况内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。内存块被释放后,其对应的指针没有被设置为 NULL ,然后在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序很有可能可以正常运转。内存块被释放后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存原创 2021-10-17 07:16:08 · 1485 阅读 · 0 评论 -
ida-IDC脚本剖析
IDCIDA中支持进行脚本运行,可以通过编写脚本通过脚本对文件进行处理,甚至可以通过编写IDC脚本编写自动化漏洞审计的脚本。IDC是ida中支持的一门与C语言类似的语言,但是它是解释型的,并不是编译型的,于此同时IDC还融合了一些python中的元素以方便一些内容的处理。执行脚本执行IDC脚本一共有三种方式idc命令行(菜单栏file->idc command)脚本文件 (菜单栏file->script file)python命令行(菜单栏file->python comm原创 2021-10-06 21:49:09 · 4797 阅读 · 0 评论 -
mips-learning
MIPSRISC特点(1) 简化的指令系统 指令少 / 寻址方式少 / 指令格式少 / 指令长度一致(2) 以RR方式工作 除Load/Store指令可访问存储器外,其余指令都只访问寄存器。(3) 指令周期短 以流水线方式工作, 因而除Load/Store指令外,其他简单指令都只需一个或一个不到的时钟周期就可完成。 (4) 采用大量通用寄存器,以减少访存次数 (5) 采用组合逻辑电路控制,不用或少用微程序控制 (6) 采用优化的编译系统,力求有效地支持高级语原创 2021-10-04 23:01:53 · 774 阅读 · 0 评论 -
堆漏洞 -fastbin_dup
double free#include <stdio.h>#include <stdlib.h>#include <string.h>int main() {fprintf(stderr, "Allocating 3 buffers.\n");char *a = malloc(9);char *b = malloc(9);char *c = malloc(9);strcpy(a, "AAAAAAAA");strcpy(b, "BBBBBBBB");s原创 2020-10-18 23:56:27 · 509 阅读 · 0 评论 -
linux堆-first_fit内存分配
first_fit实例代码#include <stdio.h>#include <stdlib.h>#include <string.h>int main() {char* a = malloc(512);char* b = malloc(256);char* c;fprintf(stderr, "1st malloc(512): %p\n", a);fprintf(stderr, "2nd malloc(256): %p\n", b);strcpy原创 2020-10-12 15:44:47 · 528 阅读 · 0 评论 -
堆漏洞-UAF漏洞简析
UAFuse after free,其内容如同其名称。在free后进行利用。UAF是堆结构漏洞的一种重要的利用方式。内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。内存块被释放后,其对应的指针没有被设置为 NULL ,然后在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序很有可能可以正常运转。内存块被释放后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。原创 2020-10-04 19:52:34 · 7561 阅读 · 0 评论 -
elf文件解析(1)——-文件头/段内容解析
ELF文件解析-文件头/段内容解析ELF: 可执行连接格式可执行连接格式是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface(ABI)而开发和发布的。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。假定开发者定义了一个二进制接口集合,ELF标准用它来支持流线型的软件发展。应该减少不同执行接口的数量。因此可以减少重新编程重新编译的代码。ELF Header #原创 2020-09-15 08:03:21 · 1153 阅读 · 0 评论 -
mips汇编基础与解析
如果只是需要看懂MIPS汇编程序的逻辑和内容其实相对简单,只需要对基本的MIPS指令了解、熟悉即可,部分少见的指令临时查看手册或者搜索即可,以下内容为基础的MIPS指令,完成以下内容的学习将可以读懂大部分简单的MIPS程序。数据类型所有MIPS指令都是32位长的各单位:1字节=8位,半字长=2个字节,1字长=4个字节一个字符空间=1个字节一个整型=一个字长=4个字节单个字符用单引号,例如:‘b’字符串用双引号,例如:“A string”寄存器MIPS下一共有32个通用寄存器在汇编中翻译 2020-09-08 16:42:52 · 3496 阅读 · 0 评论 -
查找函数的加载地址及DynELF利用
查找函数的加载地址指针寻找函数地址的典型方法是通过计算我们泄漏的同一个库中另一个函数的地址到所需函数的偏移量。但是,要使此方法有效工作,glibc的远程服务器版本需要与我们的版本相同。我们也可以通过泄漏一些函数并在libcdb.com中搜索来找到glibc的远程版本,但是有时这个方法会失败。DynELF如果我们有一个函数允许我们在任何给定的地址泄漏内存,我们可以使用类似DynELF使用pw...翻译 2020-03-23 16:44:43 · 974 阅读 · 0 评论 -
各种姿势解析-python沙箱逃逸
目录1.预备内容python中内置执行系统命令的模块:subprocessoscommandstimeitpaltformpty可执行系统命令的函数两个魔术方法python中可以执行任意代码的函数导入os或sys的库2. 沙箱逃逸花式import花式处理字符串恢复sys.modules花式执行函数通过继承关系逃逸文件读写其他3.小结/思路4.实例1. ISCC 2016 Pwn300 pycalc2.__ future _3.hackuctf 20124.future5.cuit2017payload集锦5原创 2020-09-07 21:37:29 · 3062 阅读 · 0 评论 -
PWN-shellcode-WP- (一)
BITSCTF 2017-Command_Line、CSAW Quals CTF 2017-pilot、BSides San Francisco CTF 2017-b_64_b_tuff、 Openctf 2016-tyro_shellcode1比赛WP,从栈的结构、排列,汇编底层去分析理解,一步一步的解题过程,通俗易懂且详细原创 2020-03-29 16:48:58 · 1455 阅读 · 0 评论 -
Shellcode的生成和利用
from pwn import * #pwntool生成shellcodeshellcode=asm(shellcraft.sh())shellcode = “\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05”(23字节)...原创 2020-03-08 21:28:24 · 5945 阅读 · 0 评论
分享