兴趣研究 May 13, 2020

angr的学习与使用探究

Words count 6.4k Reading time 6 mins.

一、什么是angr?

angr 是一个功能强大的二进制程序分析框架,可用于程序的静态分析和动态符号执行。支持 x86、ARM、MIPS 和 PPC 架构中 32 bit 和 64 bit 可执行程序的分...

Read article

兴趣研究 May 13, 2020

angr的学习与使用探究

Words count 6.4k Reading time 6 mins.

一、什么是angr?

angr 是一个功能强大的二进制程序分析框架,可用于程序的静态分析和动态符号执行。支持 x86、ARM、MIPS 和 PPC 架构中 32 bit 和 64 bit 可执行程序的分析,是一款非常强大的python库。

二、angr怎么安装?

1、安装 virtualenvwrapper

virtualenv 是一个可以在同一台计算机中隔离多个 Python 环境的工具。它能够用于创建独立的 Python 环境,使得多个 Python 环境互不影响。virtualenvwrapper...

Read article

PWN May 09, 2020

2.31中check机制和漏洞利用分析

Words count 200k Reading time 3:02

前言

之前一直有2.31的题目出现在赛场上,趁着这个机会,整理一波2.31下的tcache机制和利用技巧,以学习的目的为主。

一、check机制和利用技巧说明

1、fastbin的double free

只要填满了7个tcache,下一步就是放入到fastbin中,接着如果存在uaf的话,可以直接121实现和2.23一样的double free效果

2、tcache的double free

我们先来看下2.31下的源码:关于tcache结构体和key结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16...
Read article

密码学 May 08, 2020

RC4校验算法研究

Words count 8.3k Reading time 8 mins.

一、RC4算法原理

1、概念

rc4是一种基于密钥流的加密算法,它的密钥长度可变,密钥长度在1-256字节范围,主要是因为这个算法的非线性度良好,因为加解密使用的是相同的密钥,所以也是对称加密算法。

2、原理

最关键的点就是明文x和密钥经过动态的s盒生成的密钥流进行了一一异或加密,得到了密文,这里rc4是对明文进行一个个加密的,密钥流的长度和要加密的明文长度一致。

3、代码

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

RE April 23, 2020

windows下的壳研究

Words count 3.7k Reading time 3 mins.

一、什么是壳

加壳的全称是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。

加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成,因此我们需要dump内存。

壳的类型通常分为压缩壳和加密壳两类。压缩壳的特点是减小软件体积大小,加密保护不是重点,

例如: Aspack, UPX(ctf比赛中中最常见的壳), PeCompact...

Read article

RE April 17, 2020

看雪ctf二进制题解

Words count 2.6k Reading time 2 mins.

一、keygenme(逆向)

是一个crackme,已经知道用户名是KCTF的情况下,计算出序列号。这题真的是很好地锻炼了动态调试的能力,学到了~

1、首先ida分析逻辑:

这里要求输入name是大于3位小于20位,sn一定是64位的

接着进入check

这里因为进行了去符号表:

所以我们可以通过修复符号表+自定义函数名来进行加密算法的查看:

ida中shift+f5然后导入我们的静态链接库,这个库可以从github下载:

https://github.com/push0ebp/sig-database...

Read article

ANDROID January 29, 2020

安卓开发入门

Words count 138k Reading time 2:06

一、准备工作

1、android studio +自带模拟器(或者真机root)

2、frida(一个hook神器)

3、jeb(反编译利器)

4、java环境变量jdk的配置(谷歌)

5、gradle安装

6、ndk的配置与安装

二、开始编程

1、程序基础

1
2
3
4
5
6
7
8
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState...
Read article

ANDROID January 14, 2020

安卓动态调试专题

Words count 23k Reading time 21 mins.

安卓动态调试smali

安装smalidea # 下载链接: https://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.05.zip

  1. 下载
  2. Android Studio安装smalidea
    进入Settings->Plugins点击Install plugin from disk选中下载好的压缩包
  3. 安装完成 解包并配置AS
  4. 反编译成smali代码 apktool d 应用调试.apk 2. AS打开
  5. 设置smali根目录
  6. 配置...
Read article

PWN January 03, 2020

做pwn题的心得

Words count 4.3k Reading time 4 mins.

一、做栈题的心得:

1、看栈的大小

2、判断栈溢出的字节数(够的话直接栈上操作再跳回main函数再次操作,不够的话,栈迁移到bss上)

命令:cyclic n cyclic -l 报错(4位)

3、如果开了canary,先泄露出canary(覆盖低字节或者格式化字符串泄露),记得函数调用完要回填canary

4、如果开了pie,先利用write或者puts函数(覆盖0截断)或者格式化字符串泄露基地址

5、NX开了的话,一般不管,没开的话直接填shellcode,可以手写也可以工具直接生成

6、一般...

Read article

PWN January 03, 2020

堆入门学习知识总结

Words count 29k Reading time 26 mins.

一、堆的分析:

通过系统调用brk和mmap实现malloc内存分配:

thread有个arena空间,可以申请chunk

arena的个数是跟系统中处理器核心个数相关的:

1
2
3
4
For 32 bit systems:
Number of arena = 2 * number of cores + 1.
For 64 bit systems:
Number of arena = 8 * number of cores + 1.

多Arena的管理,可能就会有阻塞,资源的竞争关系

3种数据结构:

... Read article

PWN January 03, 2020

栈溢出入门到放弃1

Words count 2.8k Reading time 3 mins.

缓冲区:stack、heap

1、栈溢出:当前输入的字符的数量大于buf的大小,造成溢出,ret地址被覆盖,造成任意地址跳转

来道题目直接看看:

这里很清晰,一个main函数,调用puts函数和read函数和puts函数,下面简单的例子演示下参数入栈:

单步走:先调用puts函数,先将参数“give me some thing?”压入栈中

执行完puts函数,借助栈中的0x8048489可回到下一条将要执行的指令的地址(return地址),回到了现场,此过程pop出0x8048489(因...

Read article
Load more
0%