mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-24 03:01:15 +07:00
fix
This commit is contained in:
parent
1551bb210c
commit
f34cb95061
17
SUMMARY.md
17
SUMMARY.md
@ -17,8 +17,8 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
||||
* [1.4.5 OWASP Top Ten Project 漏洞基础](doc/1.4.5_owasp_basic.md)
|
||||
* [1.4.6 PHP 源码审计基础](doc/1.4.6_php_basic.md)
|
||||
* [1.5 逆向工程基础](doc/1.5_reverse_basic.md)
|
||||
* [1.5.1 C 语言基础](doc/1.5.1_c_basic.md)
|
||||
* [1.5.2 x86/x86-64 汇编基础](doc/1.5.2_x86_x64.md)
|
||||
* [1.5.1 C/C++ 语言基础](doc/1.5.1_c_basic.md)
|
||||
* [1.5.2 x86/x64 汇编基础](doc/1.5.2_x86_x64.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.5 静态链接](doc/1.5.5_static_link.md)
|
||||
@ -28,6 +28,7 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
||||
* [1.5.9 Linux 内核](doc/1.5.9_linux_kernel.md)
|
||||
* [1.5.10 Windows 内核](doc/1.5.10_windows_kernel.md)
|
||||
* [1.5.11 jemalloc](doc/1.5.11_jemalloc.md)
|
||||
* [1.5.12 MIPS 汇编基础](doc/1.5.12_mips.md)
|
||||
* [1.6 密码学基础](doc/1.6_crypto_basic.md)
|
||||
* [1.7 Android 安全基础](doc/1.7_android_basic.md)
|
||||
* [1.7.1 Android 环境搭建](doc/1.7.1_android_env.md)
|
||||
@ -75,6 +76,12 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
||||
* [3.1.11 Windows 内核漏洞利用](doc/3.1.11_windows_kernel_exploit.md)
|
||||
* [3.1.12 竞争条件](doc/3.1.12_race_condition.md)
|
||||
* Reverse
|
||||
* [3.2.1 patch 二进制文件](doc/3.2.1_patch_binary.md)
|
||||
* [3.2.2 脱壳技术(PE)](doc/3.2.2_pe_unpack.md)
|
||||
* [3.2.3 脱壳技术(ELF)](doc/3.2.3_elf_unpack.md)
|
||||
* [3.2.4 反调试技术(PE)](doc/3.2.4_pe_anti_debugging.md)
|
||||
* [3.2.5 反调试技术(ELF)](doc/3.2.5_elf_anti_debugging.md)
|
||||
* [3.2.6 指令混淆](doc/3.2.6_instruction_confusion.md)
|
||||
* Web
|
||||
* [3.3.1 SQL 注入利用](doc/3.3.1_sql_injection.md)
|
||||
* [3.3.2 XSS 漏洞利用](doc/3.3.2_xss.md)
|
||||
@ -90,9 +97,9 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
||||
* [4.6 one-gadget RCE](doc/4.6_one-gadget_rce.md)
|
||||
* [4.7 通用 gadget](doc/4.7_common_gadget.md)
|
||||
* [4.8 使用 DynELF 泄露函数地址](doc/4.8_dynelf.md)
|
||||
* [4.9 patch 二进制文件](doc/4.9_patch_binary.md)
|
||||
* [4.10 反调试技术](doc/4.10_antidbg.md)
|
||||
* [4.11 指令混淆](doc/4.11_instruction_confusion.md)
|
||||
* [4.9 shellcode 开发](doc/4.9_shellcode.md)
|
||||
* 4.10
|
||||
* 4.11
|
||||
* [4.12 利用 __stack_chk_fail](doc/4.12_stack_chk_fail.md)
|
||||
* [4.13 利用 _IO_FILE 结构](doc/4.13_io_file.md)
|
||||
* [4.14 glibc tcache 机制](doc/4.14_glibc_tcache.md)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# 1.5.11 jemalloc
|
||||
|
||||
- [jemalloc](#jemalloc)
|
||||
- [安装](#安装)
|
||||
- [编译安装](#编译安装)
|
||||
- [CTF 实例](#ctf-实例)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
jemalloc 是 Facebook 推出的一种通用 malloc 实现,在 FreeBSD、firefox 中被广泛使用。比起 ptmalloc2 具有更高的性能。
|
||||
|
||||
|
||||
## 安装
|
||||
## 编译安装
|
||||
我们来编译一个带调试信息的 jemalloc(注:4.x和5.x之间似乎差别比较大):
|
||||
```
|
||||
$ wget https://github.com/jemalloc/jemalloc/releases/download/5.0.1/jemalloc-5.0.1.tar.bz2
|
||||
|
1
doc/1.5.12_mips.md
Normal file
1
doc/1.5.12_mips.md
Normal file
@ -0,0 +1 @@
|
||||
# 1.5.12 MIPS 汇编基础
|
@ -4,6 +4,7 @@
|
||||
- [C 语言标准库](#c-语言标准库)
|
||||
- [整数表示](#整数表示)
|
||||
- [格式化输出函数](#格式化输出函数)
|
||||
- [关于 C++](#关于-c++)
|
||||
|
||||
|
||||
## 从源代码到可执行文件
|
||||
@ -403,3 +404,6 @@ printf("%42c%1$n", &n); // 首先输出41个空格,然后输出 n 的低
|
||||
```
|
||||
|
||||
这里我们对格式化输出函数和格式字符串有了一个详细的认识,后面的章节中我们会介绍格式化字符串漏洞的内容。
|
||||
|
||||
|
||||
## 关于 C++
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 1.5.2 x86/x86-64 汇编基础
|
||||
# 1.5.2 x86/x64 汇编基础
|
||||
|
||||
- [x86](#x86)
|
||||
- [x64](#x64)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# 1.5 逆向工程基础
|
||||
|
||||
- [1.5.1 C 语言基础](1.5.1_c_basic.md)
|
||||
- [1.5.2 x86/x86-64 汇编基础](1.5.2_x86_x64.md)
|
||||
- [1.5.1 C/C++ 语言基础](1.5.1_c_basic.md)
|
||||
- [1.5.2 x86/x64 汇编基础](1.5.2_x86_x64.md)
|
||||
- [1.5.3 Linux ELF](1.5.3_elf.md)
|
||||
- [1.5.4 Windows PE](1.5.4_pe.md)
|
||||
- [1.5.5 静态链接](1.5.5_static_link.md)
|
||||
@ -11,3 +11,4 @@
|
||||
* [1.5.9 Linux 内核](1.5.9_linux_kernel.md)
|
||||
* [1.5.10 Windows 内核](1.5.10_windows_kernel.md)
|
||||
* [1.5.11 jemalloc](1.5.11_jemalloc.md)
|
||||
* [1.5.12 MIPS 汇编基础](1.5.12_mips.md)
|
||||
|
@ -1,11 +1,24 @@
|
||||
# 2.2.2 IDA Pro
|
||||
|
||||
- [快捷键](#快捷键)
|
||||
- [IDA Python](#ida-python)
|
||||
- [常用插件](#常用插件)
|
||||
- [常用脚本](#常用脚本)
|
||||
- [技巧](#技巧)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
## 快捷键
|
||||
- `;`:为当前指令添加全文交叉引用的注释
|
||||
- `n`:定义或修改名称,通常用来标注函数名
|
||||
- `g`:跳转到任意地址
|
||||
- `Esc`:返回到跳转前的位置
|
||||
- `D`:分别按字节、字、双字显示数据
|
||||
- `A`:按 ASCII 显示数据
|
||||
|
||||
|
||||
## IDA Python
|
||||
|
||||
## 常用插件
|
||||
- [IDA FLIRT Signature Database](https://github.com/push0ebp/sig-database) -- 用于识别静态编译的可执行文件中的库函数
|
||||
- [Find Crypt](https://github.com/polymorf/findcrypt-yara) -- 寻找常用加密算法中的常数(需要安装 [yara-python](https://github.com/VirusTotal/yara-python))
|
||||
|
@ -1 +1,10 @@
|
||||
# 2.2.3 JEB
|
||||
|
||||
- [快捷键](#快捷键)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
## 快捷键
|
||||
|
||||
## 参考资料
|
||||
- https://www.pnfsoftware.com/
|
||||
|
@ -13,6 +13,7 @@
|
||||
- F9:运行,被调试软件继续运行,直到遇到下一个断点。
|
||||
- Ctrl+F9:执行到返回,在执行到一个 ret 指令时暂停,常用于从当前函数快速返回到上一个函数。
|
||||
- Alt+F9:执行到用户代码,可用于从系统部分快速返回到被调试程序部分。
|
||||
- Ctrl+G:查看任意地址的数据。
|
||||
|
||||
|
||||
## 命令行插件
|
||||
|
@ -1,10 +1,57 @@
|
||||
# 2.3.4 WinDbg
|
||||
|
||||
- [快捷键](#快捷键)
|
||||
- [命令](#命令)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
## 快捷键
|
||||
- F10:单步步过
|
||||
- F11:单步步入
|
||||
- Shift+F11:跳出当前函数
|
||||
|
||||
|
||||
## 命令
|
||||
- 调试
|
||||
- `t`:单步步入
|
||||
- `p`:单步步过
|
||||
- 执行
|
||||
- `g [addr|func]`:执行到指定位置
|
||||
- `gh [addr|func]`:执行到指定位置,遇到异常时中断
|
||||
- `gn [addr|func]`:执行到指定位置,遇到异常时忽略
|
||||
- 断点
|
||||
- `bl`:列出已设置的断点
|
||||
- `be [ID]`:激活断点
|
||||
- `bd [ID]`:禁用断点
|
||||
- `bc [ID]`:清除断点
|
||||
- `bp [addr|func]`:设置断点
|
||||
- 数据显示
|
||||
- `d [addr]`:显示内存数据
|
||||
- `db [addr]`:按字节模式显示
|
||||
- `dd [addr]`:按双字模式显示
|
||||
- `dD`:按双精度浮点数显示
|
||||
- `da`:按 ASCII 显示
|
||||
- `du`:按 Unicode 显示
|
||||
- `ds`:按字符串显示
|
||||
- `dt`:套用已知的数据结构模板显示
|
||||
- 数据编辑
|
||||
- `e [addr] [data]`:修改任意地址内存的值
|
||||
- `eb [addr] [data]`:以字节写入
|
||||
- `ed [addr] [data]`:以双字写入
|
||||
- `ea [addr] [data]`:以 ASCII 字符写入
|
||||
- `eu [addr] [data]`:以 Unicode 字符写入
|
||||
- 栈帧显示
|
||||
- `k [x]`:由栈顶开始列出当前线程中的栈帧,x 为需要回溯的栈帧数
|
||||
- `kb [x]`:可以额外显示 3 个传递给函数的参数
|
||||
- 寄存器显示
|
||||
- `r [reg]`:显示指定寄存器的值
|
||||
- 模块显示
|
||||
- `lm`:列出当前已经读入的所有模块
|
||||
- 反汇编
|
||||
- `u`:反汇编当前指令后的几条指令
|
||||
- `u [start]`:从指定位置开始反汇编
|
||||
- `u [start] [end]`:反汇编指定地址区间
|
||||
|
||||
|
||||
## 参考资料
|
||||
- https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 4.9 patch 二进制文件
|
||||
# 3.2.1 patch 二进制文件
|
||||
|
||||
- [什么是 patch](#什么是-patch)
|
||||
- [手工 patch](#手工-patch)
|
1
doc/3.2.2_pe_unpack.md
Normal file
1
doc/3.2.2_pe_unpack.md
Normal file
@ -0,0 +1 @@
|
||||
# 3.2.2 脱壳技术(PE)
|
1
doc/3.2.3_elf_unpack.md
Normal file
1
doc/3.2.3_elf_unpack.md
Normal file
@ -0,0 +1 @@
|
||||
# 3.2.3 脱壳技术(ELF)
|
@ -1,8 +1,7 @@
|
||||
# 5.9 反调试技术
|
||||
# 3.2.4 反调试技术
|
||||
|
||||
- [什么是反调试](#什么是反调试)
|
||||
- [Windows 下的反调试](#windows-下的反调试)
|
||||
- [Linux 下的反调试](#linux-下的反调试)
|
||||
- [反调试技术](#反调试技术)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
@ -10,7 +9,7 @@
|
||||
反调试是一种重要的软件保护技术,特别是在各种游戏保护中被尤其重视。另外,恶意代码往往也会利用反调试来对抗安全分析。当程序意识到自己可能处于调试中的时候,可能会改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度。
|
||||
|
||||
|
||||
## Windows 下的反调试
|
||||
## 反调试技术
|
||||
下面先介绍几种 Windows 下的反调试方法。
|
||||
|
||||
#### 函数检测
|
||||
@ -266,8 +265,5 @@ BOOL CheckDebug()
|
||||
行为占用是指在需要保护的程序中,程序自身将一些只能同时有 1 个实例的功能占为己用。比如一般情况下,一个进程只能同时被 1 个调试器调试,那么就可以设计一种模式,将程序以调试方式启动,然后利用系统的调试机制防止被其他调试器调试。
|
||||
|
||||
|
||||
## Linux 下的反调试
|
||||
|
||||
|
||||
## 参考资料
|
||||
- [详解反调试技术](https://blog.csdn.net/qq_32400847/article/details/52798050)
|
1
doc/3.2.5_elf_anti_debugging.md
Normal file
1
doc/3.2.5_elf_anti_debugging.md
Normal file
@ -0,0 +1 @@
|
||||
# 3.2.5 反调试技术(ELF)
|
@ -1,4 +1,4 @@
|
||||
# 4.11 指令混淆
|
||||
# 3.2.6 指令混淆
|
||||
|
||||
- [为什么需要指令混淆](#为什么需要指令混淆)
|
||||
- [常见的混淆方法](#常见的混淆方法)
|
@ -14,6 +14,12 @@
|
||||
* [3.1.11 Windows 内核漏洞利用](3.1.11_windows_kernel_exploit.md)
|
||||
* [3.1.12 竞争条件](3.1.12_race_condition.md)
|
||||
* Reverse
|
||||
* [3.2.1 patch 二进制文件](3.2.1_patch_binary.md)
|
||||
* [3.2.2 脱壳技术(PE)](3.2.2_pe_unpack.md)
|
||||
* [3.2.3 脱壳技术(ELF)](3.2.3_elf_unpack.md)
|
||||
* [3.2.4 反调试技术(PE)](3.2.4_pe_anti_debugging.md)
|
||||
* [3.2.5 反调试技术(ELF)](3.2.5_elf_anti_debugging.md)
|
||||
* [3.2.6 指令混淆](3.2.6_instruction_confusion.md)
|
||||
* Web
|
||||
* [3.3.1 SQL 注入利用](3.3.1_sql_injection.md)
|
||||
* [3.3.2 XSS 漏洞利用](3.3.2_xss.md)
|
||||
|
8
doc/4.9_shellcode.md
Normal file
8
doc/4.9_shellcode.md
Normal file
@ -0,0 +1,8 @@
|
||||
# 4.9 shellcode 开发
|
||||
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
## 参考资料
|
||||
- http://shell-storm.org/shellcode/
|
||||
- https://www.exploit-db.com/shellcode/
|
@ -8,9 +8,9 @@
|
||||
* [4.6 one-gadget RCE](4.6_one-gadget_rce.md)
|
||||
* [4.7 通用 gadget](4.7_common_gadget.md)
|
||||
* [4.8 使用 DynELF 泄露函数地址](4.8_dynelf.md)
|
||||
* [4.9 patch 二进制文件](4.9_patch_binary.md)
|
||||
* [4.10 反调试技术](4.10_antidbg.md)
|
||||
* [4.11 指令混淆](4.11_instruction_confusion.md)
|
||||
* [4.9 shellcode 开发](doc/4.9_shellcode.md)
|
||||
* 4.10
|
||||
* 4.11
|
||||
* [4.12 利用 __stack_chk_fail](4.12_stack_chk_fail.md)
|
||||
* [4.13 利用 _IO_FILE 结构](4.13_io_file.md)
|
||||
* [4.14 glibc tcache 机制](4.14_glibc_tcache.md)
|
||||
|
Loading…
Reference in New Issue
Block a user