# 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