malloc_consolidate调用条件 Posted on 2019-01-22 很久没写博客了,现在有空更新一下吧 最近在做hitcon 2017的题,碰到一题是利用unsorted bin attack 攻击到stdin的struct上面的,但是利用方法怎么也想不到 于是看了下题解,发现利用了malloc_consolidate,于是去看下源码,找下这个函数被调用的条件,因为 ... Read more »
linux kernel pwn 初探(5) UAF Posted on 2018-10-11 linux kernel的堆内存分配和用户态的内存分配有点不同 是利用slab/slub分配的 这里推荐一篇文章 linux 内核 内存管理 slub算法 (一) 原理 讲得非常清晰 所以我们要get root shell的方法是 open 两次设备 将内存改为0x8a,就是cred结构体的大小 ... Read more »
某公司内部ctf 一道linux kernel pwn writeup Posted on 2018-10-10 之前师兄给了xx公司内部ctf的一些题目,pwn题真的好难……以至于我唯一能做出来的,只有这道内核pwn了…… 因为避免泄密之类的,程序的代码我也不po上来了 大概描述一下驱动的功能 交互都使用ioctl 有两个功能 读取 输入 读取那里可以leak出内核base,canary 输入那里会读到栈 ... Read more »
linux kernel pwn 初探(4) ret2usr Posted on 2018-10-09 还是同一道题,这次用不同的做法 看到题目没开smep,所以就试着用ret2usr,网上搜了一圈,好像也没什么资料 但是有比较粗略的介绍说是劫持控制流到用户空间,于是测试了下,发现还真的能直接返回 能直接返回那就不用辛辛苦苦的去构造rop链了 直接调用commit_creds(prepare_kern ... Read more »
linux kernel pwn 初探(3) ROP Posted on 2018-10-09 | Edited on 2018-10-10 找了一道题来做,是2018强网杯的core,这道题因为当时不会kernel pwn,所以没做,现在来回顾一下 首先可以提取出core.ko,详细的功能我这里也不多做描述 因为kernel 开了canary 所以首先要leak出来 然后/proc/kallsyms 在初始化的时候也复制到/tmp/ka ... Read more »
linux kernel pwn 初探(2) NULL Defence Posted on 2018-10-07 | Edited on 2018-10-09 这篇文章主要介绍的是NULL defence,这个古老的kernel漏洞测试了半天,在4.15的kernel弄了半天,结果发现并不支持RIP为0,只好转而去弄2.6的kernel 这个kernel不能直接下载,只能编译,然后在我的ubuntu 16.04那里编译了半天,发现并不行,可能gcc版本太高 ... Read more »
linux kernel pwn 初探(1) 环境配置 Posted on 2018-10-07 | Edited on 2018-10-09 首先配置下环境,强烈推荐在ubuntu下弄,在kali下面弄各种奇葩的错误……… 首先配置的话我是按照dalao的教程来做的 dalao的教程 但是其实编译内核的那个环节可以省略,因为可以直接下载 利用 1sudo apt search linux-image- 可以搜索到各种版本的内核 然后再利用 ... Read more »
AFL fuzz 初探 Posted on 2018-09-16 | Edited on 2018-09-26 这里给一个比较好的入门的项目 afl-training 这个项目能让你初步熟悉afl-fuzz 然后可以自己写个栈溢出的漏洞来熟悉一下afl 虽然测试了一下,找到漏洞需要半小时…….可能我栈开大了……. 然后又测试了一下tcpdump…….10小时一个crash都没出……. Read more »
large bin attack 学习记录 Posted on 2018-08-15 这两天去看了下large bin attack的一些东西,有一种攻击方法比较没用,只是能alloc自己控制的chunk里面的内容,但是这个unsorted bin也可以做到,不用这么麻烦 然后记忆中0ctf quals有一题heapstorm2也是 large bin attack,于是去看了下 这 ... Read more »
pwn从入门到放弃第六章——简单ROP Posted on 2018-07-29 | Edited on 2018-09-16 这篇鸽了挺久的,补一下吧 简单介绍ROP首先先来说下什么是ROP ROP是Return Oriented Programming 的缩写翻译过来就是面向返回的编程 你可能会问,我们不是利用栈溢出漏洞么,怎么又扯到编程了? 其实ROP就是另外一种意义上的编程,其核心在于利用了指令集中的 ret 指令 ... Read more »