「 PWN 」
January 03, 2020
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
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;
init_0(); while ( 1 ) { while ( 1 ) { choice = menu(... |
Read article
「 PWN 」
January 03, 2020
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;
setvbuf(stdout, 0LL, 2, 0L... |
Read article
「 PWN 」
January 03, 2020
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
if (!prev_inuse(... |
Read article
「 PWN 」
January 03, 2020
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
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
| sudo apt-get install qemu
|
Read article
「 PWN 」
January 03, 2020
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
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
Words count
133k
Reading time
2:01
开启刷题模式:
学了栈溢出和格式化字符串漏洞,现在是练手的时候,打完题目总结好准备开坑堆,师傅说Hackme的题目还不错,于是果断去刚一波~下面对所有题目进行复现,也检验自己的学习情况,查缺补漏。
1、bash
一波常规操作:
这题是最简单的pwn了,题目疯狂暗示cat flag,猜想应该是直接连接远程,ls再cat flag,没什么好讲的。
1 2 3 4 5 6 7
| from pwn import * context.log_level = 'debug' context.terminal...
|
Read article
「 PWN 」
January 03, 2020
Words count
39k
Reading time
36 mins.
一、原理:
那个的是unlink中的向前合并:
1 2 3 4 5 6 7
| 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不一样:
Read article