「 PWN 」
January 03, 2020
Words count
62k
Reading time
56 mins.
题目1:bin
方法介绍:leak canary
利用格式化字符串漏洞,泄露出canary的值,然后填到canary相应的位置从而绕过保护实现栈溢出。
开始分析:
常规操作,先checksec下,再ida静态分析
很明显有格式化字符串漏洞和栈溢出漏洞,但是开了栈溢出保护,程序有2个输入,第一次输入可以先泄露cananry,第二次直接覆盖canary就可以栈溢出了,简单明了,gdb动态调试,可以看到canary在格式化字符串的偏移为7,
在第二个次输入中,我们需要输入到canary进行覆盖工作,这是可以...
Read article
「 PWN 」
January 03, 2020
Words count
43k
Reading time
40 mins.
一、前置知识:
程序:hhh
常规思路,先检查再分析逻辑:
很简单,就只有堆栈不可执行的保护,一个write函数,还有一个read函数栈溢出(0x24,0x80)。
一想到这里,思路就是栈迁移用write先泄露libc_start_main的真实地址,再onegadget即可getshell,但是今天要学习的是不用泄露就可getshell的做法:dl_runtime_resolve
做题前先了解下前置知识:随便找个程序:666分析,看到第一次调用puts函数。
查看内存可知,就是push ...
Read article
「 PWN 」
January 03, 2020
Words count
12k
Reading time
11 mins.
house of force介绍:
通俗的讲就是通过修改topchunk的size字节来控制malloc的返回地址,从而达到修改任意地址内容的目的:
具体原理分析:
因为从topchunk的切割是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13
| p = av->top; size = chunksize (p);
if ((unsigned long) (size) >= (unsigned... |
Read article
「 PWN 」
January 03, 2020
Words count
53k
Reading time
48 mins.
zerostorage
前言:这道题是2016年的0CTF的一道pwn,带了点内核的考点在里面,主要是unsorted_bin的攻击。
1、分析保护机制
保护全开,ida搞一波:
初始化时有个随机数生成的函数,为后面的堆地址进行异或加密。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| __int64 __fastcall main(__int64 a1, char **a2, char... |
Read article
「 PWN 」
October 08, 2019
Words count
208k
Reading time
3:09
一、largebin的原理学习
大于512(1024)字节(0x400)的chunk称之为large chunk,large bin就是用于管理这些large chunk的
Large bins 中一共包括 63 个 bin,index为64~126,每个 bin 中的 chunk 的大小不一致,而是处于一定区间范围内
largebin 的结构和其他链表都不相同,更加复杂
largebin里除了有fd、bk指针,另外还有fd_nextsize 和 bk_nextsize 这两个指针,因此是有横...
Read article
「 PWN 」
October 01, 2019
Words count
14k
Reading time
12 mins.
一、原理
House of romain简称为爆破法,是一种简单粗暴的方式,结合了fastbin attack(UAF)+unsortedbin attack(获取真实地址),特征就只有一个:
UAF漏洞+堆溢出(能修改size就行),没有puts函数
攻击流程:
申请fastbin大小的chunk1,先free掉fastbin中的chunk1,然后由前一个chunk0堆溢出改chunk1大小,使其落入unsorted bin,再free掉unsortedbin中同一chunk1(UAF实现double...
Read article