This commit is contained in:
firmianay 2017-08-09 00:09:42 +08:00
parent c7f996ee95
commit 5330ed1487
8 changed files with 35 additions and 21 deletions

View File

@ -3,10 +3,10 @@
- [一、基础知识篇](doc/1_basic.md) - [一、基础知识篇](doc/1_basic.md)
- [1.1 ctf 介绍](doc/1.1_ctf.md) - [1.1 ctf 介绍](doc/1.1_ctf.md)
- [1.2 提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way) - [1.2 提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)
- [1.3 Linux基础](doc/1.3_linux_basic.md) - [1.3 Linux 基础](doc/1.3_linux_basic.md)
- [1.4 Web 安全基础](doc/1.4_web_basic.md) - [1.4 Web 安全基础](doc/1.4_web_basic.md)
- [1.5 逆向工程基础](doc/1.5_reverse_basic.md) - [1.5 逆向工程基础](doc/1.5_reverse_basic.md)
- [1.5.1 C语言基础](doc/1.5.1_c_basic.md) - [1.5.1 C 语言基础](doc/1.5.1_c_basic.md)
- [1.5.2 x86/x64/ARM 汇编基础](doc/1.5.2_x86&x64&ARM.md) - [1.5.2 x86/x64/ARM 汇编基础](doc/1.5.2_x86&x64&ARM.md)
- [1.5.3 Linux ELF](doc/1.5.3_elf.md) - [1.5.3 Linux ELF](doc/1.5.3_elf.md)
- [1.5.4 Windows PE](doc/1.5.4_pe.md) - [1.5.4 Windows PE](doc/1.5.4_pe.md)
@ -14,7 +14,7 @@
- [1.5.6 动态链接](doc/1.5.6_dynamic_link.md) - [1.5.6 动态链接](doc/1.5.6_dynamic_link.md)
- [1.5.7 内存与虚拟内存](doc/1.5.7_memory.md) - [1.5.7 内存与虚拟内存](doc/1.5.7_memory.md)
- [1.6 密码学基础](doc/1.6_crypto_basic.md) - [1.6 密码学基础](doc/1.6_crypto_basic.md)
- [1.7 Android安全基础](doc/1.7_android_basic.md) - [1.7 Android 安全基础](doc/1.7_android_basic.md)
- [二、工具篇](doc/2_tools.md) - [二、工具篇](doc/2_tools.md)
- [2.1 VM](doc/2.1_vm.md) - [2.1 VM](doc/2.1_vm.md)

View File

@ -1,13 +1,16 @@
# 第一章 基础知识篇 # 第一章 基础知识篇
- [1.1 CTF 介绍](1.1_ctf.md) - [1.1 ctf 介绍](1.1_ctf.md)
- [1.2 打造虚拟机](2.1_vm.md) - [1.2 提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)
- [1.3 Linux基础](1.3_linux_basic.md) - [1.3 Linux 基础](1.3_linux_basic.md)
- [1.4 Web 安全基础](1.4_web_basic.md)
- [1.5 逆向工程基础](1.5_reverse_basic.md) - [1.5 逆向工程基础](1.5_reverse_basic.md)
- [1.5.1 C语言基础](1.5.1_c_basic.md) - [1.5.1 C 语言基础](1.5.1_c_basic.md)
- [1.5.2 x86/x64/ARM 汇编基础](1.5.2_x86&x64&ARM.md) - [1.5.2 x86/x64/ARM 汇编基础](1.5.2_x86&x64&ARM.md)
- [1.5.3 Linux ELF](1.5.3_elf.md) - [1.5.3 Linux ELF](1.5.3_elf.md)
- [1.5.4 Windows PE](1.5.4_pe.md) - [1.5.4 Windows PE](1.5.4_pe.md)
- [1.5.5 静态链接](1.5.5_static_link.md) - [1.5.5 静态链接](1.5.5_static_link.md)
- [1.5.6 动态链接](1.5.6_dynamic_link.md) - [1.5.6 动态链接](1.5.6_dynamic_link.md)
- [1.5.7 内存与虚拟内存](1.5.7_memory.md) - [1.5.7 内存与虚拟内存](1.5.7_memory.md)
- [1.6 密码学基础](1.6_crypto_basic.md)
- [1.7 Android 安全基础](1.7_android_basic.md)

View File

@ -8,6 +8,7 @@
## gdb 的组成架构 ## gdb 的组成架构
![](../pic/2.2_gdb.png) ![](../pic/2.2_gdb.png)
## gdb 基本工作原理 ## gdb 基本工作原理
gdb 通过系统调用 `ptrace` 来接管一个进程的执行。ptrace 系统调用提供了一种方法使得父进程可以观察和控制其它进程的执行检查和改变其核心映像以及寄存器。它主要用来实现断点调试和系统调用跟踪。ptrace 系统调用的原型如下: gdb 通过系统调用 `ptrace` 来接管一个进程的执行。ptrace 系统调用提供了一种方法使得父进程可以观察和控制其它进程的执行检查和改变其核心映像以及寄存器。它主要用来实现断点调试和系统调用跟踪。ptrace 系统调用的原型如下:
``` ```

View File

@ -1,8 +1,12 @@
# 第二章 工具篇 # 第二章 工具篇
- [2.1 gdb/peda](2.2_gdb&peda.md) - [2.1 VM](2.1_vm.md)
- [2.2 ollydbg](2.3_ollydbg.md) - [2.2 gdb/peda](2.2_gdb&peda.md)
- [2.3 windbg](2.4_windbg.md) - [2.3 ollydbg](2.3_ollydbg.md)
- [2.4 radare2](2.5_radare2.md) - [2.4 windbg](2.4_windbg.md)
- [2.5 IDA Pro](2.6_idapro.md) - [2.5 radare2](2.5_radare2.md)
- [2.6 pwntools](2.7_pwntools.md) - [2.6 IDA Pro](2.6_idapro.md)
- [2.7 pwntools](2.7_pwntools.md)
- [2.8 zio](2.8_zio.md)
- [2.9 metasploit](2.9_metasploit.md)
- [2.10 binwalk](2.10_binwalk.md)

View File

@ -1 +1,4 @@
# 第四章 技巧篇 # 第四章 技巧篇
- [4.1 AWD模式](4.1_AWD.md)
- [4.2 Linux 命令行技巧](4.2_Linux_terminal_tips.md)

View File

@ -334,7 +334,7 @@ Pintool 的入口为 `main` 函数,通常需要完成下面的功能:
## Pin 在 CTF 中的应用 ## Pin 在 CTF 中的应用
由于程序具有循环、分支等结构,每次运行时执行的指令数量不一定相同,于是我们可是使用 Pin 来统计执行指令的数量,从而对程序进行分析。特别是对一些使用特殊指令集和虚拟机,或者运用了反调试等技术的程序来说,相对于静态分析去死磕,动态插桩技术是一个比较好的选择。 由于程序具有循环、分支等结构,每次运行时执行的指令数量不一定相同,于是我们可是使用 Pin 来统计执行指令的数量,从而对程序进行分析。特别是对一些使用特殊指令集和虚拟机,或者运用了反调试等技术的程序来说,相对于静态分析去死磕,动态插桩技术是一个比较好的选择。
我们先举一个例子,[源码](../source/Others/5.2_pin.c)如下: 我们先举一个例子,[源码](../src/Others/5.2_pin.c)如下:
```c ```c
#include<stdio.h> #include<stdio.h>
#include<string.h> #include<string.h>
@ -414,11 +414,11 @@ Count 152786
第二位是 `b`,同时我们还可以发现,每一位正确与错误的指令计数之差均为 14。同理我们就可以暴力破解出密码但这种暴力破解方式大大减少了次数提高了效率。破解脚本可查看参考资料。 第二位是 `b`,同时我们还可以发现,每一位正确与错误的指令计数之差均为 14。同理我们就可以暴力破解出密码但这种暴力破解方式大大减少了次数提高了效率。破解脚本可查看参考资料。
#### 参考资料 #### 参考资料
[A binary analysis, count me if you can](http://shell-storm.org/blog/A-binary-analysis-count-me-if-you-can/) - [A binary analysis, count me if you can](http://shell-storm.org/blog/A-binary-analysis-count-me-if-you-can/)
[pintool2](https://github.com/sebastiendamaye/pintool2) - [pintool2](https://github.com/sebastiendamaye/pintool2)
#### 练习 #### 练习
[Baleful - picoCTF 2014](../src/5.2_baleful) - [Baleful - picoCTF 2014](../src/Reverse/5.2_baleful)
[Reverse 400 - Hack You 2014](../src/Reverse/5.2_reverse_400) - [Reverse 400 - Hack You 2014](../src/Reverse/5.2_reverse_400)
[wyvern 500 - CSAW CTF 2015](../src/Reverse/5.2_wyvern_500) - [wyvern 500 - CSAW CTF 2015](../src/Reverse/5.2_wyvern_500)
[rev100 - th3jackers CTF 2015](../src/5.2_th3jackers_100) - [rev100 - th3jackers CTF 2015](../src/Reverse/5.2_th3jackers_100)

View File

@ -1,3 +1,5 @@
# 第五章 高级篇 # 第五章 高级篇
- [5.1 Fuzz 测试](doc/5.1_fuzz.md) - [5.1 Fuzz 测试](5.1_fuzz.md)
- [5.2 Pin 动态二进制插桩](5.2_pin.md)
- [5.3 angr 二进制自动化分析](5.3_angr.md)

View File

@ -4,3 +4,4 @@
- [6.2 更多 Windows 工具](6.2_wintools.md) - [6.2 更多 Windows 工具](6.2_wintools.md)
- [6.3 博客、文章和书籍](6.3_books&blogs.md) - [6.3 博客、文章和书籍](6.3_books&blogs.md)
- [6.4 习题 write-up](6.4_writeup.md) - [6.4 习题 write-up](6.4_writeup.md)
- [6.5 Linux x86-64 系统调用表](http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/)