admin 发布于 11月19, 2018

linux 内核编程(一)

什么是模块模块是linux内核向外部提供的一个内核接口,全称为动态可加载内核模块(Loadable Kernel Module,LKM)。内核模块可以被单独编译,但不能单独运行,必须被链接到内核,作为内核的一部分运行在内核空间。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。内核模块与应用程序在编写上的一些区别 C语言应用程序 ...

阅读全文 »

admin 发布于 11月13, 2018

tcpdump 4.5.2 拒绝服务漏洞分析

本文首发于先知社区,未经许可禁止转载第一次做漏洞分析,有什么错误的地方欢迎各位提出分析环境ubuntu16.04 x86_64gdb with pwndbgtcpdump 4.5.1poc编译安装tcpdump$ sudo apt-get install libpcap-dev$ dpkg -l libpcap-dev$ wget https://www.exploit-db.com/apps/9...

阅读全文 »

admin 发布于 11月12, 2018

arm-pwn学习(一)

所需工具pattern.pygdb-static 静态链接的gdbadb 安卓必备arm 特殊性thumb指令集:比arm指令集对内存的操作效率高与x86相比,没有ret指令,直接通过修改pc指针去执行指令没有pop指令,binary中存在这些指令,可能是存在thumb指令...

阅读全文 »

admin 发布于 11月07, 2018

linux二进制分析读书笔记(一)

/proc 下相关文件/proc//maps该文件保存了一个进程的镜像布局,内容包括:可执行文件,共享库,堆,栈,VDSO。/proc/kcorelinux内核动态核心文件/boot/System.map包含了整个内核的所有符号/proc/kallsyms与system.map文件类似,详细还是baidu linux内核符号表吧/proc/iomen与系统内存有关,可以由此获得内核的text段保存...

阅读全文 »

admin 发布于 09月06, 2018

Malloc.c 源码分析(一)

定义 malloc chunk 的结构体struct malloc_chunk { INTERNAL_SIZE_T mchunk_prev_size; /* 前一个chunk的size(如果前一个chunk是free的). */ INTERNAL_SIZE_T mchunk_size; /* 当前chunk的大小,包括chunk头 */ struct ma...

阅读全文 »

admin 发布于 09月02, 2018

canary绕过方式总结

canary简述Canary保护机制的原理,是在一个函数入口处从fs段内获取一个随机值,一般存到EBP - 0x4(32位)或RBP - 0x8(64位)的位置。如果攻击者利用栈溢出修改到了这个值,导致该值与存入的值不一致,函数返回时,__stack_chk_fail函数将抛出异常并退出程序直接泄露canary通过覆盖canary低位例题请看i春秋ctf大本营---easypwn为了防止被leak...

阅读全文 »

admin 发布于 08月18, 2018

how2heap学习 --- house of rabbit

关于 house of rabbit与 fastbin 有关fastbin 用单向链表管理,申请一个fastbin里面的chunk时,会检查该chunk的size,不符合则抛出异常。但是在malloc consolidate的时候fastbin中的堆块进行合并时size没有进行检查从而伪造一个假的堆块,实现overlap等。利用方式,通过改写fastbin里面chunk的size,实现overla...

阅读全文 »

admin 发布于 08月17, 2018

how2heap学习 --- house of orange

关于 House of Orange利用场景 : 程序中无法使用 free 函数目的 : 利用漏洞获得 free 的效果原理 : 当 top chunk大小不满足申请的chunk大小,则会将top chunk放在 unsorted bin中 : 程序会调用libc中的int_malloc函数, int_malloc函数会依次检查 bins 中的freechunk(全部为空),会向系统申请更大内存,...

阅读全文 »