RE January 03, 2020

桂林CTF逆向题解

Words count 58k Reading time 53 mins.

一、逆向

1、re

第一题,拖进ida发现是打不开的,怀疑题目加壳了,elf文件加壳的话,拖进虚拟机,直接打命令:

strings re

看到:

UPX的壳直接脱了,upx -d 文件名

看到函数名...

Read article

RE January 03, 2020

桂林CTF逆向题解

Words count 58k Reading time 53 mins.

一、逆向

1、re

第一题,拖进ida发现是打不开的,怀疑题目加壳了,elf文件加壳的话,拖进虚拟机,直接打命令:

strings re

看到:

UPX的壳直接脱了,upx -d 文件名

看到函数名被隐藏了,但是很简单,直接shift +f12查找字符串,input flag,双击定位到那里,查看引用,ctrl + x,就可以定位到主逻辑了,F5,就是上面的界面了,接着分析一波,看到correct,直接进去:

可以知道是除法,但是少了a1[6]的检验,出题粗心吧?!直接脚本搞出来,a1[6]...

Read article

密码学 January 03, 2020

消息验证码MAC和数字签名研究

Words count 1.1k Reading time 1 mins.

一、MAC的原理和分析

MAC算法结合了md5和sha算法的优势,并加入密钥的支持,是一种更为安全的消息摘要算法,MAC是含有密钥的散列函数算法,兼容了md5和sha算法的特性,并在此基础上加入了密钥。

经过mac算法得到的摘要值也可以用16进制编码表示,其摘要值长度与参与实现的摘要值长度相同,例如,HmacSHA1算法得到的摘要长度就是SHA1算法得到的摘要长度,都是160位二进制,换算成十六进制编码为40位。

多对一函数的话,可以知道一般比较难破译,正常来说,可以分为3种类型,如图所示:

... Read article

CTF比赛 January 03, 2020

湖湘杯CTF二进制部分wp

Words count 32k Reading time 29 mins.

一、Pwn

1、HackNote | solved

这题什么保护也没有开,分析程序发现是常见的菜单题:

![57371788851](/blog_img/1573717888513.png)
漏洞点在于edit函数:
  ![img](/blog_img/1573717896780.png)

会计算输入的字符个数作为下一次edit的size,这里只要申请时0xx8形式的大小,这样就会连着下一个chunk的size,因为计算时看0截断的,也就是说size会被算进去,实现offbyone的漏洞,就可以利用...

Read article

PWN January 03, 2020

神奇的gadget

Words count 14k Reading time 12 mins.

一、神奇的gadget:

这个gadget一般存在于__do_global_dtors_aux中,可能是出题人自己写的gadget吧~适用于no leak类型的题目。

1
add [rbp-3Dh],ebx           //当rbp和ebx可控时,我们可以修改rbp-0x3d地址里面内容,一般用于计算真实地址之间的偏移,从而获取想要的真实地址

拿一道题看看吧:

no_leak

先看看保护机制:

got表不可改,NX保护,庆幸的是没有canary保护和pie,比较友好,先看看ida:

1
2
3
4
5
6
7
8
int...
Read article

PWN January 03, 2020

library题解

Words count 49k Reading time 45 mins.

一、题目

library

先checksec下:

除了pie没有开,其他保护都开了,got表不可改,那么只能改malloc_hook和free_hook了,这题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
45
46
47
48
49
50
51
52
53
int __cdecl __noreturn main(int argc, const char **argv, const char...
Read article

CTF比赛 January 03, 2020

红帽杯CTF线上赛二进制部分wp

Words count 64k Reading time 59 mins.

一、Pwn

1、three | solved

这题看到程序输入3字节后有个call指令,可以执行命令:

所以填入机器码,利用mov指令跳转到ecx寄存器(rcx正好有我们后面的输入的bss的地址),就可跳到bss地址执行我们的静态ropchain,直接getshell~

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61...
Read article

CTF比赛 January 03, 2020

西湖论剑部分wp

Words count 15k Reading time 14 mins.

Pwn题目:story

![image.png](https://upload-images.jianshu.io/upload_images/9085575-5c9429d71ed20cb7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

这题一看除了没开内存地址随机化,其他都开了,分析逻辑发现漏洞点,格式化字符串漏洞,还有栈溢出漏洞,可以泄露真实地址和canary。v1=1024个字节,在strdup这个copy函数可以实现...

Read article

PWN January 03, 2020

House of Lor

Words count 6.6k Reading time 6 mins.

一、原理:

先来看下small bin中的源码:

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
if (in_smallbin_range(nb)) {
// 获取 small bin 的索引
idx = smallbin_index(nb);
// 获取对应 small bin 中的 chunk 指针
bin = bin_at(av, idx);
// 先执行 victim= last(bin...
Read article

PWN January 03, 2020

House of Rabbit

Words count 21k Reading time 19 mins.

一、原理介绍:

1、修改size:

1
2
3
4
5
6
7
8
9
10
11
12
#include "stdio.h"
#include "string.h"
int main()
{
unsigned long* chunk1=malloc(0x40); //0x602000
unsigned long* chunk2=malloc(0x40); //0x602050
malloc(0x10);
free(chunk1);
free(chunk2);
chunk1[-1]=0xa1;
malloc(0x1000);
&...
Read article

PWN January 03, 2020

House of orange

Words count 84k Reading time 1:17

一、第一种类型的原理

House of Orange 的利用比较特殊,首先需要目标漏洞是堆上的漏洞但是特殊之处在于题目中不存在 free 函数或其他释放堆块的函数。我们知道一般想要利用堆漏洞,需要对堆块进行 malloc 和 free 操作,但是在 House of Orange 利用中无法使用 free 函数,因此 House of Orange 核心就是通过漏洞利用获得 free 的效果。如我们前面所述,House of Orange 的核心在于在没有 free 函数的情况下得到一个释放的堆块...

Read article
Load more
0%