Update section Conclusion

This commit is contained in:
Damian Pfammatter
2024-05-02 14:52:34 +02:00
parent e8d4ff831e
commit 58fa2dfe2c
+14 -14
View File
@@ -23,17 +23,10 @@
3. [Run Final Exploit](./6_exploitation.md#run-final-exploit)
4. [Conclusion](./6_exploitation.md#conclusion)
<!--TODO--------------------------------------------------------------------------------------------
- [X] Can we integrate morion/circled.rop3.py to circled.server.py?
- [X] Try out manual exploit
- [ ] Do in all chapters: ``` -> ```shell or ```python
- [ ] Table of Contents
- [ ] Can morion_rop_generator merge the payloads?
- [ ] Document gdb debug output to show payload works
- [ ] Create screencast using morion_pwndbg
- [ ] Remove circled.exploit.md and circled.exploit.py from git repository
- [ ] Why do we have `var:s+0`?
- [ ] Recheck links [Symbolic Execution: Analysis Modules](./4_symbex.md#analysis-modules)
- [X] Update figure references (e.g. Figure 5.4)
- [ ] Morion README: Intended usage - crash triage
--------------------------------------------------------------------------------------------------->
# Exploitation
@@ -805,14 +798,21 @@ If the final exploit worked, you will receive a reverse shell on the targeted de
attaching of the _gdbserver_, i.e. without the flag `--gdb`. You will receive the reverse shell,
once the correct stack address of the system command has been found.
## Conclusion
- Note: The shown exploit could easily be generated without using symbolic execution. However, we
have chosen it since it is rather easy to follow along and suitable to explain how Morion works.
This repository intended to demonstrate (some of) the current functionalities (and limitations) of
the PoC tool [Morion](https://github.com/pdamian/morion) and to enable interested readers to
replicate all listed steps, fostering independent experimentation with the tool. It aimed to show
how symbolic execution might assist in understanding the characteristics of a bug, determine its
capabilities to decide whether or not a bug is exploitable, and if so support in the process of
crafting an exploit. We showcased the tool on a real-world vulnerability to proof its
practicability, however want to emphasize that the shown vulnerability class, stack-based buffer
overflows, are well studied and rather easy to exploit. This might not necessarily hold true for
other types of vulnerability classes whose exploitation might sometimes be more of an art than
science, and in consequence typically more difficult to address by an (automated) tool.
- Conclusions
- Well-known and rather simple to exploit vulnerability class (stack buffer overflow)
- Exploitation of others might be harder to automate with symbolic execution (heap overflows, race conditions, etc.)
- A lot open challenges regarding environment modeling / (semantic) function modeling (see my presentations)
- Sometimes not needed, sometimes a simplified model might work, sometimes minor details mather
[Morion](https://github.com/pdamian/morion), but also symbolic execution in more general terms,
still have a lot of limitations (scalability, modeling interactions with the environment, etc.),
especially when being applied to real-world binaries. [Morion](https://github.com/pdamian/morion)
was created with the intention to research and better understand these limits.
----------------------------------------------------------------------------------------------------
[Back-to-Top](./6_exploitation.md#table-of-contents)