This commit is contained in:
firmianay 2018-07-14 00:31:51 +08:00
parent 4aa53ac3bf
commit b7d4f8ed46
55 changed files with 179 additions and 53 deletions

View File

@ -100,7 +100,7 @@ GitHub 地址https://github.com/firmianay/CTF-All-In-One
* [4.7 通用 gadget](doc/4.7_common_gadget.md)
* [4.8 使用 DynELF 泄露函数地址](doc/4.8_dynelf.md)
* [4.9 shellcode 开发](doc/4.9_shellcode.md)
* 4.10
* [4.10 跳转导向编程JOP](doc/4.10_jop.md)
* 4.11
* [4.12 利用 __stack_chk_fail](doc/4.12_stack_chk_fail.md)
* [4.13 利用 _IO_FILE 结构](doc/4.13_io_file.md)
@ -240,6 +240,9 @@ GitHub 地址https://github.com/firmianay/CTF-All-In-One
* [8.42 Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software](doc/8.42_taintcheck.md)
* [8.43 DTA++: Dynamic Taint Analysis with Targeted Control-Flow Propagation](doc/8.43_dta++.md)
* [8.44 Superset Disassembly: Statically Rewriting x86 Binaries Without Heuristics](doc/8.44_multiverse.md)
* [8.45 Ramblr: Making Reassembly Great Again](doc/8.45_ramblr.md)
* [8.46 FreeGuard: A Faster Secure Heap Allocator](doc/8.46_freeguard.md)
* [8.47 Jump-Oriented Programming: A New Class of Code-Reuse Attack](doc/8.47_jop.md)
* [九、附录](doc/9_appendix.md)
* [9.1 更多 Linux 工具](doc/9.1_Linuxtools.md)
* [9.2 更多 Windows 工具](doc/9.2_wintools.md)

View File

@ -1091,8 +1091,8 @@ int main() {
fprintf(stderr, "The first one: %p\n", &fake_chunks[0]);
fprintf(stderr, "The second one: %p\n", &fake_chunks[4]);
fake_chunks[1] = 0x20; // the size
fake_chunks[5] = 0x1234; // nextsize
fake_chunks[1] = 0x20; // the size
fake_chunks[5] = 0x1234; // nextsize
fake_chunks[2] = 0x4141414141414141LL;
fake_chunks[6] = 0x4141414141414141LL;
@ -1277,6 +1277,8 @@ Freeing the overwritten pointer.
#3 0x4009b8 in _start (/home/firmyy/how2heap/a.out+0x4009b8)
```
house-of-spirit 在 libc-2.26 下的利用可以查看章节 4.14。
## 参考资料
- [how2heap](https://github.com/shellphish/how2heap)

1
doc/4.10_jop.md Normal file
View File

@ -0,0 +1 @@
# 4.10 跳转导向编程JOP

View File

@ -8,8 +8,8 @@
* [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 shellcode 开发](doc/4.9_shellcode.md)
* 4.10
* [4.9 shellcode 开发](4.9_shellcode.md)
* [4.10 跳转导向编程JOP](4.10_jop.md)
* 4.11
* [4.12 利用 __stack_chk_fail](4.12_stack_chk_fail.md)
* [4.13 利用 _IO_FILE 结构](4.13_io_file.md)

View File

@ -246,7 +246,7 @@ angr 提供了大量函数用于程序分析,在这些函数在 `Project.analy
>>> plt.savefig('temp.png') # 保存
```
#### 加载二进制文件
#### 二进制文件加载器
我们知道 angr 是高度模块化的,接下来我们就分别来看看这些组成模块,其中用于二进制加载模块称为 CLE。主类为 `cle.loader.Loader`,它导入所有的对象文件并导出一个进程内存的抽象。类 `cle.backends` 是加载器的后端,根据二进制文件类型区分为 `cle.backends.elf`、`cle.backends.pe`、`cle.backends.macho` 等。
首先我们来看加载器的一些常用参数:

View File

@ -145,7 +145,7 @@ int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);
```
- `setjmp()`:将函数在此处的上下文保存到 `jmp_buf` 结构体,以供 longjmp 从此结构体中恢复
- `setjmp()`:将函数在此处的上下文保存到 `jmp_buf` 结构体,以供 longjmp 从此结构体中恢复上下文
- `env`:保存上下文的 `jmp_buf` 结构体变量
- 如果直接调用该函数,返回值为 0。如果该函数从 longjmp 调用返回,返回值根据 longjmp 的参数决定。
- `longjmp()`:从 `jmp_buf` 结构体中恢复由 setjmp 函数保存的上下文,该函数不返回,而是从 setjmp 函数中返回

View File

@ -1,7 +1,7 @@
# 8.10 AEG: Automatic Exploit Generation
论文http://security.ece.cmu.edu/aeg/aeg-current.pdf
[paper](http://security.ece.cmu.edu/aeg/aeg-current.pdf)
## 简介
- 这篇论文向我们展示了如何将控制流劫持攻击的漏洞利用生成模型化为一个形式化验证问题。

View File

@ -1,6 +1,6 @@
# 8.11 Address Space Layout Permutation (ASLP): Towards Fine-Grained Randomization of Commodity Software
论文https://www.acsac.org/2006/papers/44.pdf
[paper](https://www.acsac.org/2006/papers/44.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.12 ASLR on the Line: Practical Cache Attacks on the MMU
论文:https://www.cs.vu.nl/~giuffrida/papers/anc-ndss-2017.pdf
[paper](https://www.cs.vu.nl/~giuffrida/papers/anc-ndss-2017.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.13 New Frontiers of Reverse Engineering
论文:http://reversingproject.info/project_repository/reversing_references/pdf/new_frontiers_of_reverse_engineering.pdf
[paper](http://reversingproject.info/project_repository/reversing_references/pdf/new_frontiers_of_reverse_engineering.pdf)
## What is your take-away message from this paper?
This paper briefly presents an overview of the field of reverse engineering, reviews main achievements and areas of application, and highlights key open research issues for the future.

View File

@ -1,6 +1,6 @@
# 8.14 Who Allocated My Memory? Detecting Custom Memory Allocators in C Binaries
论文:https://www.cs.vu.nl/~herbertb/papers/membrush_wcre13.pdf
[paper](https://www.cs.vu.nl/~herbertb/papers/membrush_wcre13.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.15 EMULATOR vs REAL PHONE: Android Malware Detection Using Machine Learning
论文:https://pure.qub.ac.uk/portal/files/127232616/IWSPA_codaspy_2017.pdf
[paper](https://pure.qub.ac.uk/portal/files/127232616/IWSPA_codaspy_2017.pdf)
## What is your take-away message from this paper?
The authors present an investigation of machine learning based malware detection using dynamic analysis on real devices.

View File

@ -1,7 +1,7 @@
# 8.16 DynaLog: An automated dynamic analysis framework for characterizing Android applications
论文:https://pure.qub.ac.uk/portal/files/93998809/DynaLog_2016.pdf
[paper](https://pure.qub.ac.uk/portal/files/93998809/DynaLog_2016.pdf)
## What is your take-away message from this paper?
The authors presented DynaLog, a framework that enable automated mass dynamic analysis of applications in order to characterize them for analysis and potential detection of malicious behaviour.

View File

@ -1,7 +1,7 @@
# 8.17 A Static Android Malware Detection Based on Actual Used Permissions Combination and API Calls
论文http://waset.org/publications/10005499
[paper](http://waset.org/publications/10005499)
## What is your take-away message from this paper?
The paper put forward a machine learning detection method that based on the actually used Permissions Combination and API calls.

View File

@ -1,7 +1,7 @@
# 8.18 MaMaDroid: Detecting Android malware by building Markov chains of behavioral models
论文:http://discovery.ucl.ac.uk/1532047/1/Stringhini_mamadroid.pdf
[paper](http://discovery.ucl.ac.uk/1532047/1/Stringhini_mamadroid.pdf)
## What is your take-away message from this paper?
This paper presented an Android malware detection system based on modeling the sequences of API calls as Markov chains.

View File

@ -1,7 +1,7 @@
# 8.19 DroidNative: Semantic-Based Detection of Android Native Code Malware
论文:http://pages.cs.wisc.edu/~vrastogi/static/papers/aqrcr17.pdf
[paper](http://pages.cs.wisc.edu/~vrastogi/static/papers/aqrcr17.pdf)
## What is your take-away message from this paper?
The paper proposed DroidNative for detection of both bytecode and native code Android malware variants.

View File

@ -1,7 +1,7 @@
# 8.1 The Geometry of Innocent Flesh on the Bone: Return-into-libc without Function Calls (on the x86)
论文https://hovav.net/ucsd/dist/geometry.pdf
[paper](https://hovav.net/ucsd/dist/geometry.pdf)
## 简介
论文提出了一种 return-into-libc 的攻击方法以对抗针对传统代码注入攻击的防御技术W⊕X。它不会调用到完整的函数而是通过将一些被称作 gadgets 的指令片段组合在一起形成指令序列以达到任意代码执行的效果。这一技术为返回导向编程Return-Oriented Programming奠定了基础。

View File

@ -1,7 +1,7 @@
# 8.20 DroidAnalytics: A Signature Based Analytic System to Collect, Extract, Analyze and Associate Android Malware
论文:https://www.cse.cuhk.edu.hk/~cslui/PUBLICATION/TRUST13DROIDANALYTICS.pdf
[paper](https://www.cse.cuhk.edu.hk/~cslui/PUBLICATION/TRUST13DROIDANALYTICS.pdf)
## What is your take-away message from this paper?
The authors present DroidAnalytics, an Android malware analytic system for malware collection, signature generation, information retrieval, and malware association based on similarity score. Furthermore, DroidAnalytics can efficiently detect zero-day repackaged malware.

View File

@ -1,6 +1,6 @@
# 8.21 Micro-Virtualization Memory Tracing to Detect and Prevent Spraying Attacks
论文:https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_cristalli.pdf
[paper](https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_cristalli.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.22 Practical Memory Checking With Dr. Memory
论文:http://groups.csail.mit.edu/commit/papers/2011/bruening-cgo11-drmemory.pdf
[paper](http://groups.csail.mit.edu/commit/papers/2011/bruening-cgo11-drmemory.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.23 Evaluating the Effectiveness of Current Anti-ROP Defenses
论文:https://www.syssec.rub.de/media/emma/veroeffentlichungen/2014/05/09/TR-HGI-2014-001_1_1.pdf
[paper](https://www.syssec.rub.de/media/emma/veroeffentlichungen/2014/05/09/TR-HGI-2014-001_1_1.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.24 How to Make ASLR Win the Clone Wars: Runtime Re-Randomization
论文:https://www.cs.umd.edu/class/fall2017/cmsc818O/papers/aslr-clone-wars.pdf
[paper](https://www.cs.umd.edu/class/fall2017/cmsc818O/papers/aslr-clone-wars.pdf)
## 简介

View File

@ -1,7 +1,10 @@
# 8.25 (State of) The Art of War: Offensive Techniques in Binary Analysis
论文https://www.cs.ucsb.edu/~vigna/publications/2016_SP_angrSoK.pdf
[paper](https://www.cs.ucsb.edu/~vigna/publications/2016_SP_angrSoK.pdf)
[slides](https://docs.google.com/presentation/d/1t7KaCMc73z7WdV7EcL0z9TSHlT_kjdMdSrPHtpA6ezc/edit#slide=id.ga5363f155_3_76)
[video](https://www.youtube.com/watch?v=ONuLsVcaHB8)
[source](https://github.com/angr/angr)
## 简介
这篇文章提出了一个二进制分析框架,并实现了许多现有的分析技术。通过将这些技术系统化地实现,可以让其他研究人员直接利用并开发新的技术。此外,在统一框架中实现这些技术可以更直接地进行比较,并确定各自的优缺点。

View File

@ -1,7 +1,7 @@
# 8.26 Driller: Augmenting Fuzzing Through Selective Symbolic Execution
论文:http://cs.ucsb.edu/~chris/research/doc/ndss16_driller.pdf
[paper](http://cs.ucsb.edu/~chris/research/doc/ndss16_driller.pdf)
## 简介
这篇文章提出了 Driller这是一种混合漏洞挖掘工具它以互补的方式将模糊测试和选择性混合执行结合起来以发现隐藏更深的漏洞。模糊测试用于探索程序空间的不同区间并使用混合执行来生成满足不同区间的输入。

View File

@ -1,7 +1,9 @@
# 8.27 Firmalice - Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware
论文https://seclab.cs.ucsb.edu/media/uploads/papers/firmalice.pdf
[paper](https://seclab.cs.ucsb.edu/media/uploads/papers/firmalice.pdf)
[slides](https://docs.google.com/presentation/d/1kwObiKZsPSpxM0uZByzeRTaLC7RS1E2C7UR6HxD7Y1Y/edit#slide=id.g1d1712ddc1_0_0)
[video](https://www.youtube.com/watch?v=Fi_S2F7ud_g)
## 简介
这篇文章提出了 Firmalice一种二进制分析框架以支持对嵌入式设备上所运行的固件进行分析。Firmalice 构建在符号执行引擎之上并且提供了程序切片之类的技术来提高其可扩展性。此外Firmalice 构建了一种新型的认证旁路漏洞模型,基于攻击者的能力来确定执行特权操作所需要的输入。

View File

@ -1,9 +1,12 @@
# 8.28 Cross-Architecture Bug Search in Binary Executables
论文https://christian-rossow.de/publications/crossarch-ieee2015.pdf
[paper](https://christian-rossow.de/publications/crossarch-ieee2015.pdf)
[video](https://www.youtube.com/watch?v=1LELf0Ml1-w)
## 简介
这篇文章提出了一个系统来导出已知漏洞的漏洞签名bug signatures然后可以利用这些签名来查找不同 CPU 架构x86、ARM和MIPS上的其他二进制文件中的漏洞。
## 方法

View File

@ -1,6 +1,6 @@
# 8.29 Dynamic Hooks: Hiding Control Flow Changes within Non-Control Data
论文:https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-vogl.pdf
[paper](https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-vogl.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.2 Return-Oriented Programming without Returns
论文:https://www2.cs.uic.edu/~s/papers/noret_ccs2010/noret_ccs2010.pdf
[paper](https://www2.cs.uic.edu/~s/papers/noret_ccs2010/noret_ccs2010.pdf)
## 简介
论文提出了一种不依赖于使用 return 指令的 ROP 技术。这种攻击方法是在 libc 中找到一些特定的指令序列,来替代 return 指令,完成和 return 同样的工作。这些指令具备图灵完备性,已经在 (x86)Linux 和 (ARM)Android 中被证实。
@ -70,3 +70,89 @@ pop %eax; jmp *(%eax)
下图是一个函数调用的示例:
![](../pic/8.2_function.png)
通过 gadget 来实现函数调用一方面可以调用正常的返回导向指令序列,另一方面可以调用合法的函数(需要移动栈指针以及处理返回值)。在函数调用之前,栈指针应该被移动到一个新的位置,以防改写栈上的其他 gadget。如果函数执行时栈指针位于位置 n那么 k 个参数应该被保存在 n+4, n+8, ... , n+4k。然后函数调用 gadget 从而调用函数 A -> fun(arg1, arg2, ..., argn)。
1. 装载寄存器 esi, ebp 和 eax。
- 将 catalog 中 call-jump 序列的地址装入 esi 寄存器:
```
pop %esi; or $0xf3, %al; jmp *(%edx);
# call-jump 序列: call *-0x56000A00(%ecx); add %bh, %bl; inc %ebc; add %bj, %dh; jmp *%edi;
```
- 将 catalog 中 leave-jump 序列的地址装入 ebp 寄存器:
```
pop %ebp; or $0xf3, %al; jmp *(%edx);
# leave-jump 序列leave; sar %cl, %bl; jmp *-0x7d(%ebp);
```
- 将值 0xb+n 装入 eax 寄存器:
```
pop %eax; sub %dh, %bl; jmp *(%edx);
```
2. call-jump 序列的地址位于地址 n将值 0x38 装入寄存器 esi并加上栈指针的值。此时 esi 保存了一个地址,在函数调用返回时会将栈指针设置为该地址。
```
mov %esi, -0xB(%eax); jmp *(%edx);
pop %esi; or $0xf3, %al; jmp *(%edx);
add %esp, %esi; jmp *(%edx);
```
3. 将函数返回时栈指针的值赋值给 ebp。
- 先将函数返回的栈指针保存到 esi 指向的内存中:
```
pop %eax; sub %dh, %bl; jmp *(%edx);
mov %esi, -0xB(%eax); jmp *(%edx);
```
- 将上一步存放的栈指针取出来放入 edi 寄存器:
```
pop %eax; sub %dh, %bl; jmp *(%edx);
mov -0xD(%eax), %edi; jmp *(%edx);
```
- 通过 xchg 交换 edi 和 ebp
```
xchg %ebp, %edi; jmp *(%edx);
```
此时edi 中保存 leave-jump 序列的地址ebp 保存函数返回后的栈指针地址。
4. 将 `pop %ebx; jmp *(%ebx);` 序列的地址装入 esi保存函数地址的指针加上偏移量装入 ecx将值 n 装入 eax。交换 esp 和 eax 的值,使得栈指针被设置为 n。
```
pop %esi; or $0xf3, %al; jmp *(%edx);
pop %ecx; cmp %dh, %dh; jmp *(%edx);
pop %eax; sub %dh, %bl; jmp *(%edx);
xchg %esp, %eax; dec %ebx; std; jmp *0(%esi);
```
5. 由于 n 保存了 call-jump 序列的地址,此时 call-jump 序列被调用即函数被间接调用。函数返回后eax 保存了返回值。由于 edi 保存了 leave-jump 序列的地址,因此 leave-jump 序列被调用,将 ebp 赋值给 esp并从栈顶 pop 出新的 ebp
```
pop %ebx; jmp *(%ebx);
call *-0x56000A00(%ecx); add %bh, %bl; inc %ebc; add %bj, %dh; jmp *%edi;
leave; sar %cl, %bl; jmp *-0x7d(%ebp);
```
此时 ebp 指向 `pop %ebx; jmp *(%ebx);`,然后 jmp 过去。
6. 将 eax 里的返回值保存到内存:
```
pop %ebx; jmp *(%ebx);
pop %edx; jmp *(%edx);
xchg %esi, %eax; and %dh, %dh; jmp *(%edx);
pop %eax; sub %dh, %bl; jmp *(%edx);
mov &esi, -0xB(%eax); jmp *(%edx);
```
在另一篇论文里,几乎同时提出了这种基于 jmp 指令的攻击方法即跳转导向编程Jump-Oriented Programming参考章节 8.47。

View File

@ -1,6 +1,6 @@
# 8.30 Preventing brute force attacks against stack canary protection on networking servers
论文:http://hmarco.org/data/Preventing_brute_force_attacks_against_stack_canary_protection_on_networking_servers.pdf
[paper](http://hmarco.org/data/Preventing_brute_force_attacks_against_stack_canary_protection_on_networking_servers.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.31 WYSINWYX What You See Is Not What You eXecute
论文:http://research.cs.wisc.edu/wpis/papers/wysinwyx.final.pdf
[paper](http://research.cs.wisc.edu/wpis/papers/wysinwyx.final.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.32 Unleashing MAYHEM on Binary Code
论文:http://www.cse.psu.edu/~trj1/cse597-s13/docs/binary_mayhem_oakland_12.pdf
[paper](http://www.cse.psu.edu/~trj1/cse597-s13/docs/binary_mayhem_oakland_12.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.33 Under-Constrained Symbolic Execution: Correctness Checking for Real Code
论文:https://cseweb.ucsd.edu/~dstefan/cse291-winter18/papers/ucklee.pdf
[paper](https://cseweb.ucsd.edu/~dstefan/cse291-winter18/papers/ucklee.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.34 Enhancing Symbolic Execution with Veritesting
论文:https://users.ece.cmu.edu/~aavgerin/papers/veritesting-icse-2014.pdf
[paper](https://users.ece.cmu.edu/~aavgerin/papers/veritesting-icse-2014.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.35 Q: Exploit Hardening Made Easy
论文:http://static.usenix.org/legacy/events/sec11/tech/full_papers/Schwartz.pdf
[paper](http://static.usenix.org/legacy/events/sec11/tech/full_papers/Schwartz.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.36 A Survey of Symbolic Execution Techniques
论文:http://season-lab.github.io/papers/survey-symbolic-execution-preprint-CSUR18.pdf
[paper](http://season-lab.github.io/papers/survey-symbolic-execution-preprint-CSUR18.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.37 CUTE: A Concolic Unit Testing Engine for C
论文:http://mir.cs.illinois.edu/marinov/publications/SenETAL05CUTE.pdf
[paper](http://mir.cs.illinois.edu/marinov/publications/SenETAL05CUTE.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.38 TaintEraser: Protecting Sensitive Data Leaks Using Application-Level Taint Tracking
论文:http://people.eecs.berkeley.edu/~dawnsong/papers/2011%20tainteraser%20p142-zhu.pdf
[paper](http://people.eecs.berkeley.edu/~dawnsong/papers/2011%20tainteraser%20p142-zhu.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.39 DART: Directed Automated Random Testing
论文:https://web.eecs.umich.edu/~weimerw/2011-6610/reading/p213-godefroid.pdf
[paper](https://web.eecs.umich.edu/~weimerw/2011-6610/reading/p213-godefroid.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.3 Return-Oriented Rootkits: Bypassing Kernel Code Integrity Protection Mechanisms
论文:https://www.usenix.org/legacy/event/sec09/tech/full_papers/hund.pdf
[paper](https://www.usenix.org/legacy/event/sec09/tech/full_papers/hund.pdf)
## 简介
本论文设计并实现了一个能够自动化构建 ROP 指令序列的攻击系统。由于系统使用的指令序列来自内核已有的代码,而不需要进行代码注入,所以能够绕过内核代码完整性保护机制。

View File

@ -1,6 +1,6 @@
# 8.40 EXE: Automatically Generating Inputs of Death
论文https://web.stanford.edu/~engler/exe-ccs-06.pdf
[paper](https://web.stanford.edu/~engler/exe-ccs-06.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.41 IntPatch: Automatically Fix Integer-Overflow-to-Buffer-Overflow Vulnerability at Compile-Time
论文:https://llvm.org/pubs/2010-09-ESORICS-FixOverflows.pdf
[paper](https://llvm.org/pubs/2010-09-ESORICS-FixOverflows.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.42 Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software
论文http://valgrind.org/docs/newsome2005.pdf
[paper](http://valgrind.org/docs/newsome2005.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.43 DTA++: Dynamic Taint Analysis with Targeted Control-Flow Propagation
论文:http://bitblaze.cs.berkeley.edu/papers/dta%2B%2B-ndss11.pdf
[paper](http://bitblaze.cs.berkeley.edu/papers/dta%2B%2B-ndss11.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.44 Superset Disassembly: Statically Rewriting x86 Binaries Without Heuristics
http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2018/02/ndss2018_05A-4_Bauman_paper.pdf
[paper](http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2018/02/ndss2018_05A-4_Bauman_paper.pdf)
## 简介

8
doc/8.45_ramblr.md Normal file
View File

@ -0,0 +1,8 @@
# 8.45 Ramblr: Making Reassembly Great Again
[paper](https://www.cs.ucsb.edu/~vigna/publications/2017_NDSS_Ramblr.pdf)
[slides](http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2017/09/ndss2017_10-5-wang_slides.pdf)
[video](https://www.youtube.com/watch?v=_BIamPJE8EQ)
## 简介

9
doc/8.46_freeguard.md Normal file
View File

@ -0,0 +1,9 @@
# 8.46 FreeGuard: A Faster Secure Heap Allocator
[paper](http://web.cse.ohio-state.edu/~lin.3021/file/CCS17c.pdf)
[slides](https://www.utdallas.edu/~zxl111930/file/CCS17c.pptx)
[video](https://www.youtube.com/watch?v=fR9Dyzl7Rhw)
[source](https://github.com/UTSASRG/FreeGuard)
## 简介

6
doc/8.47_jop.md Normal file
View File

@ -0,0 +1,6 @@
# 8.47 Jump-Oriented Programming: A New Class of Code-Reuse Attack
[paper](https://www.comp.nus.edu.sg/~liangzk/papers/asiaccs11.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.4 ROPdefender: A Detection Tool to Defend Against Return-Oriented Programming Attacks
论文:https://www.ei.ruhr-uni-bochum.de/media/trust/veroeffentlichungen/2010/12/14/HGI-TR-2010-001.pdf
[paper](https://www.ei.ruhr-uni-bochum.de/media/trust/veroeffentlichungen/2010/12/14/HGI-TR-2010-001.pdf)
## 简介
论文设计并实现了工具 ROPdefender可以动态地检测传统的 ROP 攻击基于return指令。ROPdefender 可以由用户来执行,而不依赖于源码、调试信息等在现实中很难获得的信息。

View File

@ -1,6 +1,6 @@
# 8.5 Data-Oriented Programming: On the Expressiveness of Non-Control Data Attacks
论文:https://www.comp.nus.edu.sg/~shweta24/publications/dop_oakland16.pdf
[paper](https://www.comp.nus.edu.sg/~shweta24/publications/dop_oakland16.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.6 Hacking Blind
论文:http://www.scs.stanford.edu/~sorbo/brop/bittau-brop.pdf
[paper](http://www.scs.stanford.edu/~sorbo/brop/bittau-brop.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.7 What Cannot Be Read, Cannot Be Leveraged? Revisiting Assumptions of JIT-ROP Defenses
论文:https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_maisuradze.pdf
[paper](https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_maisuradze.pdf)
## 简介

View File

@ -1,6 +1,6 @@
# 8.8 All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but might have been afraid to ask)
论文:https://users.ece.cmu.edu/~aavgerin/papers/Oakland10.pdf
[paper](https://users.ece.cmu.edu/~aavgerin/papers/Oakland10.pdf)
## 简介

View File

@ -1,7 +1,7 @@
# 8.9 Symbolic Execution for Software Testing: Three Decades Later
论文:https://people.eecs.berkeley.edu/~ksen/papers/cacm13.pdf
[paper](https://people.eecs.berkeley.edu/~ksen/papers/cacm13.pdf)
## 简介
近几年符号执行因其在生成高覆盖率的测试用例和发现复杂软件漏洞的有效性再次受人关注。这篇文章对现代符号执行技术进行了概述,讨论了这些技术在路径探索,约束求解和内存建模方面面临的主要挑战,并讨论了几个主要从作者自己的工作中获得的解决方案。

View File

@ -47,3 +47,6 @@
* [8.42 Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software](8.42_taintcheck.md)
* [8.43 DTA++: Dynamic Taint Analysis with Targeted Control-Flow Propagation](8.43_dta++.md)
* [8.44 Superset Disassembly: Statically Rewriting x86 Binaries Without Heuristics](8.44_multiverse.md)
* [8.45 Ramblr: Making Reassembly Great Again](8.45_ramblr.md)
* [8.46 FreeGuard: A Faster Secure Heap Allocator](8.46_freeguard.md)
* [8.47 Jump-Oriented Programming: A New Class of Code-Reuse Attack](8.47_jop.md)

View File

@ -11,8 +11,8 @@ int main() {
fprintf(stderr, "The first one: %p\n", &fake_chunks[0]);
fprintf(stderr, "The second one: %p\n", &fake_chunks[4]);
fake_chunks[1] = 0x20; // the size
fake_chunks[5] = 0x1234; // nextsize
fake_chunks[1] = 0x20; // the size
fake_chunks[5] = 0x1234; // nextsize
fake_chunks[2] = 0x4141414141414141LL;
fake_chunks[6] = 0x4141414141414141LL;