PWN January 03, 2020

TAMUCTF-pwn1到pwn5

Words count 24k Reading time 22 mins.

师傅们说去做做TAMUCTF的题目,积累经验,于是去尝试了一波,才发现真的是有些地方自己不懂的知识盲区,也作为一个积累吧,在这里记录

题目:pwn1

首先看看题目先

有栈溢出的漏洞,其他的保护全开,...

Read article

PWN January 03, 2020

TAMUCTF-pwn1到pwn5

Words count 24k Reading time 22 mins.

师傅们说去做做TAMUCTF的题目,积累经验,于是去尝试了一波,才发现真的是有些地方自己不懂的知识盲区,也作为一个积累吧,在这里记录

题目:pwn1

首先看看题目先

有栈溢出的漏洞,其他的保护全开,拖进ida分析一波:

逻辑很清晰了,前面的几个strcmp可以直接逆向思维,把正确的答案写到payload中,最后一步直接覆盖那个数v5为目标值即可:于是可以写出payload:

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...
Read article

PWN January 03, 2020

mmap下的offbynull

Words count 40k Reading time 36 mins.

一、题目:pwn1

先checksec下:

保护全开,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
void __fastcall __noreturn main(__int64 a1, char **a2, char **a3)
{
signed int choice; // eax

init_0();
while ( 1 )
{
while ( 1 )
{
choice = menu(...
Read article

PWN January 03, 2020

offbyone引发的一连串问题

Words count 61k Reading time 56 mins.

一、题目:Book

先来看看保护机制:

栈溢出保护没开(这是一道堆题。。),其他保护全开

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
__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
__int64 savedregs; // [rsp+20h] [rbp+0h]

setvbuf(stdout, 0LL, 2, 0L...
Read article

PWN January 03, 2020

unlink初探

Words count 217k Reading time 3:17

一、源码介绍:

当需要合并相邻的freechunk时用到unlink:

前言:P的选取一定是你要unlink合并后的P的地址,不是随便选取的~

1、向后合并:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!c
/*malloc.c int_free函数中*/
/*这里p指向当前malloc_chunk结构体,bck和fwd分别为当前chunk的向后和向前一个free chunk*/
/* consolidate backward */
if (!prev_inuse(...
Read article

PWN January 03, 2020

堆进阶学习之4大利器

Words count 60k Reading time 54 mins.

一、Tcache攻击

前言:

​ 之前打比赛一直都是做ubuntu16.04的,很少做ubuntu18下的(有tcache机制),护网杯有道题是libc-2.27.so,我一开始不会做tcache,学了一晚上,理解了基础的原理和攻击方式,这里做个小小的总结。

首先是tcache的原理,这个在ctfwiki上讲的挺透彻的,这里做个复习。

1、重点需要理解的2个函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#堆块free后放入tcache
static void
tcache_put...
Read article

PWN January 03, 2020

32位、64位下arm_pwn学习

Words count 28k Reading time 25 mins.

前言:

pwn的学习之路一直在进行,今天看了arm_pwn,搞环境就搞了半天,琢磨工具使用到做题,这里总结下,希望能帮助到大家,少走一点弯路。

一、环境配置:

环境是一大玄学问题,这里仅仅是 我Ubuntu16.04下的环境配置,亲测有效,但是遇到玄学的问题时,也请留言,努力帮大家解决。

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
#安装qemu
sudo apt-get install qemu
#sudo apt-get install qemu-user(ubuntu20...
Read article

PWN January 03, 2020

AWD中的patch技巧总结

Words count 6k Reading time 5 mins.

一、栈题的patch技巧

1、修改read的大小:

这里很明显栈大小是0x30,但是可以输入的大小是0x12C,所以绝对的栈溢出,这里改size为0x30就不会溢出了:记住是改汇编

2、第二种改法是改leave_ret为ret_ret:

修改后:

方法二只适用于只有main函数的,没有子函数调用的栈溢出类型题目。

3、当遇到gets函数时,改成read函数:

这里改到我们的en_frame段中去执行那个read函数:

将size大小改成了0x18,就不会栈溢出啦~

二、格式化字符...

Read article

PWN January 03, 2020

House of spirit系列

Words count 49k Reading time 44 mins.

一、原理分析:

House of spirit思想:

这是fastbin的一种attack的方式,就是我们想要控制的区域是不可控的,但是我们能通过伪造fake_chunk来释放它再申请从而得到目标区域,但是有前提:

(1)获取目标区域地址(堆、栈、bss….)

(2)伪造堆块(找到那两个可控区域)

(3)有能覆盖堆指针的漏洞存在(覆盖堆指针为我们的目标区域地址)

(4)调用free函数将伪堆块释放到fastbin中

(5)申请堆块,将刚刚的伪堆块申请出来

(6)输入数据,即可修改目标区域的内容

... Read article

PWN January 03, 2020

Hackme复现

Words count 133k Reading time 2:01

开启刷题模式:

学了栈溢出和格式化字符串漏洞,现在是练手的时候,打完题目总结好准备开坑堆,师傅说Hackme的题目还不错,于是果断去刚一波~下面对所有题目进行复现,也检验自己的学习情况,查缺补漏。

1、bash

一波常规操作:

这题是最简单的pwn了,题目疯狂暗示cat flag,猜想应该是直接连接远程,ls再cat flag,没什么好讲的。

1
2
3
4
5
6
7
#coding=utf8
from pwn import *
context.log_level = 'debug'
context.terminal...
Read article

PWN January 03, 2020

House of Einherjar

Words count 39k Reading time 36 mins.

一、原理:

那个的是unlink中的向前合并:

1
2
3
4
5
6
7
/* consolidate backward */
if (!prev_inuse(p)) {
prevsize = prev_size(p);
size += prevsize;
p = chunk_at_offset(p, -((long) prevsize));
unlink(av, p, bck, fwd);
}

这个和unlink的操作其实差不多,但是呢填入的fd和bk不一样:

1
2
p->fd =...
Read article
Load more
0%