# Cyberthon Training
[Slides over here](https://docs.google.com/presentation/d/1COLcGVuStK-YzXSMG_NHaQzxeKt0e-109zFX90r6AJw/edit?usp=sharing)
## Preparation
- Ghidra
- https://ghidra-sre.org/InstallationGuide.html
- WSL / Linux dualboot
- https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10#1-overview
- Linux dualboot (upto them)
- GDB
- `sudo apt install gdb`
- pwntools
- `pip install --user pwntools`
- GEF (install gdb, pwntools first)
- Setup instruction under https://gef.readthedocs.io/en/master/
- angr
- `pip install --user angr`
- ltrace, strace
- if it doesn't already exist in WSL / Linux then `sudo apt install strace ltrace`
## Timeline
0 - 10: intro
10 - 40: z3
40 - 100: angr
100 - 180: pwn
## misc stuff in ELF
- INIT table, FINI table
- strace, ltrace
## z3
- solve some physics problem e.g. quadratic formula.
- 3 crackmes (warmup, harder warmup, medium)
## angr
- resolve crackmes using angr
- instrumentation, hooking at address, viewing registers/memory
## pwn
- calling conventions
- stack layout
- GOT, PLT
- how to use debugger (+ pwntools/gef features)
- ROP (ret2win, ret2win regs, ret2csu, ret2libc, one_gadget)
### hw
- printf
- ret2dlresolve
- scanf/gets/fgets differences