PWN January 03, 2020

IO_FILE探索

Words count 81k Reading time 1:13

一、IO_File结构体一览

首先看一波源码:

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

PWN January 03, 2020

IO_FILE探索

Words count 81k Reading time 1:13

一、IO_File结构体一览

首先看一波源码:

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
struct _IO_FILE {
int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags

/* The following pointers correspond...
Read article

密码学 January 03, 2020

MD5加密和Hash函数分析

Words count 111k Reading time 1:41

一、MD5加密算法的原理分析

​ md5的输入是512位的倍数,输出是128位,首先填充消息,使其长度为与448 mod 512同余,即长度是512的倍数减去64,填充的消息第一位是1,后面全部都是0,即使原来的消息长度刚好与448 mod 512同余(64),仍然需要填充,即使原来的消息长度刚好是512的整数倍,仍需要填充。

​ 再将这剩余的64位填充为原来消息的长度(二进制),如果原来的消息长度大于64位,则只填充低64位,之后的序列长度就是512的倍数了,这里每一个512位称为一个分组,又...

Read article

RE January 03, 2020

OD动态查看栈技巧

Words count 8.9k Reading time 8 mins.

一、准备工作:

题目链接:https://pan.baidu.com/s/1p3s_RpW_fO_CUWXriFGuAQ

提取码:4lvd
(提示:给出的这道题是我脱壳后的,因为没有及时保存原题,抱歉,不过是简单的UXP壳,大家直接用工具去脱也是可以的,所以相信大家没毛病)

二、开始分析:

这题是当时打南宁杯时的题目,拿到题目一起分析下:

1、首先用PEID查壳,发现是UXP壳,直接用工具脱壳,我的工具如下(这一步相信都没问题的):

2、脱完壳,拖进OD,看看情况:

要求输入flag
3、接着拖进ida看...

Read article

PWN January 03, 2020

万圣节Pwnhub一道题

Words count 36k Reading time 33 mins.

一、pwnhub

这题感觉挺有意思的 ,思路清晰了,但是过程煎熬了,下面记录下自己经历的事和学到的东西。

保护全开,就不说了直接看看ida:

3个功能,一个malloc、一个free、一个write函数,这里先看下malloc函数:

先申请一个0x10的没用的块用来隔开堆块,再申请不超过0xff的堆块去写内容,然后每一次malloc,num就会加一,这里只能malloc10次,超了就没了,接着看下free函数:

很明显的UAF漏洞,然后只free那个自己申请的内容块,0x10的堆块作为标志...

Read article

PWN January 03, 2020

Pwnable.tw的shellcode系列

Words count 71k Reading time 1:04

这篇博客专门讲shellcode的系列,也作为一个复习内容吧,主要针对的是,各种情况下的绕过shellcode检测:

首先是shellcode的生成,一般2种途径:工具+手撕

这里优先推荐手撕,不然你就是脚本小子,遇到难一点的检测机制,还是会绕不过,从最简单的开始:

一、一般的getshell或者orw出flag

32位下:

1、找准寄存器,确定系统调用的对应值

eax、ebx、ecx、edx (对应的是系统调用号+3个参数)

2、execve(“/bin/sh”,0, 0)的情况:

1
2
3
4
5...
Read article

密码学 January 03, 2020

RSA算法体系研究

Words count 23k Reading time 21 mins.

在打0CTF时看到了RSA的那题,但是不会做,于是先学习一波RSA吧,算做入门,自己也喜欢数学,正好积累下,RSA是非对称加密,相对于DES对称加密而言的,下面进去正题。

一、欧拉定理:

如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:

这是个很重要的公式,先来理解下,首先n = pq(q和p互为质数),欧拉函数 φ(p) = p-1(表示与p互质的数的个数为p-1个,下同), φ(q) = q-1,所以 得到

推理1:φ(n) = φ(p)φ(q) = (p-1)(...
Read article

CTF比赛 January 03, 2020

SUCTF二进制部分wp

Words count 28k Reading time 25 mins.

前言

这场比赛打了2天,学到了东西,在这里做下总结,方便后续学习。

一、Pwn方向

1、playfmt

这次的pwn题很不友好,只有这题能做,菜鸡Orz,先检查保护机制:

got表不可改,堆栈不可执行,看名字知道是格式化字符串漏洞的题目~ida分析一波:

可以看到申请了堆块去存放flag的内容,然后进去logo函数的do_fmt函数,里面有格式化字符串漏洞:

漏洞点就是格式化字符串,这里能读入0xc8字节,而且是个死循环,除非你输入quit手动退出,很明显了,但是buf不是栈,是bss段地址,也...

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

密码学 January 03, 2020

tea、xtea、xxtea算法研究

Words count 47k Reading time 43 mins.

一、Tea

先来看一波C语言实现的代码,通过代码学习更快理解原理:

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
#include <stdio.h>  
#include <stdint.h>

//加密函数
void encrypt (uint32_t* v, uint32_t* k) {
uint32_t v0=v[0], v1=v[1], sum=0, i; /...
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
Load more
0%