|
| 1 | +--- |
| 2 | +title: Your One Stop CTF Resource Guide |
| 3 | +description: CTF resource compilation |
| 4 | +date: 2024-08-27 17:00:00 +0800 |
| 5 | +categories: [Resources] |
| 6 | +tags: [] |
| 7 | +--- |
| 8 | + |
| 9 | + |
| 10 | +## What are CTFs? 👾 |
| 11 | + |
| 12 | +CTFs are **gamified cybersecurity competitions**, where you solve different challenges for “flags”, or an answer of sorts! |
| 13 | + |
| 14 | +In true _l33t hacker_ terms, this would be sort-of **hacking an application to obtain a password** (aka the "flag" in this context) as proof that you have compromised the system. |
| 15 | + |
| 16 | +They are a **fun way** of developing cybersecurity skill sets, as well as to reinforce and learn more new knowledge on hacking and cybersecurity concepts. |
| 17 | + |
| 18 | +Something important to note is that CTFs are **not a realistic overview of day-to-day work that cybersecurity professionals do**. As mentioned, they are meant to be a fun way of testing your knowledge and skills that you possess. |
| 19 | + |
| 20 | +### CTF Formats |
| 21 | + |
| 22 | +These CTF competitions usually occur in two formats --- **Jeopardy and Attack & Defence**. |
| 23 | + |
| 24 | +**Jeopardy** provides participants with a series of challenges of different technical domains for participants to solve and submit the flag to the CTF platform for points. |
| 25 | + |
| 26 | +On the contrary, in an **attack-defense CTF format**, each team is provided with a machine that is **running some vulnerable services**. Participants will have to **exploit these vulnerabilities in the other team's machines to gain points, while fixing their own services so that they won't be attacked**. |
| 27 | + |
| 28 | +## Getting Started ⛳ |
| 29 | + |
| 30 | +### Setting up a CTF Environment |
| 31 | + |
| 32 | +The most important thing you need before getting started is your very own Linux environment. |
| 33 | + |
| 34 | +The recommended and straightforward setup would be to download a **pre-built Kali Linux VM** [here](https://www.kali.org/get-kali/#kali-virtual-machines), and download VMWare workstation Pro by following the instructions [here](https://www.mikeroysoft.com/post/download-fusion-ws/). |
| 35 | + |
| 36 | +Alternatively, Windows user can also opt to use [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install). **Ensure that you are using WSL2 and not WSL1.** |
| 37 | + |
| 38 | +### Where to find CTFs? |
| 39 | + |
| 40 | +Usually for local CTFs, you have to look out for advertisement blasts nearer to the dates or learn about it via word of mouth. |
| 41 | + |
| 42 | +Usually you can follow the social media of different cybersecurity groups around Singapore to get more news about happenings in the scene. |
| 43 | + |
| 44 | +For CTFs in general, you can find many international CTFs happening almost every weekend on [CTFtime](https://ctftime.org/). |
| 45 | + |
| 46 | +## Learning Resources 📚 |
| 47 | + |
| 48 | +There are various kind of resources shared below. |
| 49 | + |
| 50 | +Some of them are more general while most of them are specific to certain cybersecurity domains. |
| 51 | + |
| 52 | +### Good Overall Training Platforms |
| 53 | + |
| 54 | +If you're just looking for some platform to explore and try out and learn some basic CTF skills, these are some good places to start. |
| 55 | + |
| 56 | +They provide beginner guides and beginner-friendly challenges for you to attempt all year round. |
| 57 | + |
| 58 | +- [PicoCTF](https://play.picoctf.org/) |
| 59 | +- [Dreamhack](http://dreamhack.io/) - _this contain training resources and challenges for every category mentioned below <3_ |
| 60 | + |
| 61 | +### General cybersecurity knowledge |
| 62 | + |
| 63 | +- [WhiteHacks 2021](https://www.notion.so/Whitehacks-2021-b066154e4adb4567a9201b983decee1d) - _good contextual basics for beginners_ |
| 64 | +- [LiveOverflow YouTube](https://www.youtube.com/watch?v=8ev9ZX9J45A&ab_channel=LiveOverflow) - _for the visual/auditory learners_ |
| 65 | + |
| 66 | +An important fundamental in Cybersecurity is getting used to a Linux Terminal. These following resources familiarizes you with navigating around a linux shell. |
| 67 | + |
| 68 | +- [cmdchallenge](https://cmdchallenge.com/) |
| 69 | +- [OverTheWire Bandit](https://overthewire.org/wargames/bandit/) |
| 70 | + |
| 71 | +### Reverse Engineering |
| 72 | + |
| 73 | +> Reverse Engineering is typically the process of taking a program and understanding the functionality of a program by converting it to and then understanding the assembly/code behind a program. |
| 74 | +{:.prompt-info} |
| 75 | + |
| 76 | +- [omu.rce](https://omu.rce.so/) - _learn about low-level assembly and linux basics_ |
| 77 | +- [challenges.re](https://challenges.re/) - _a comprehensive book on reverse engineering with practices_ |
| 78 | +- [crackmes.one](https://crackmes.one/) - _a series of programs to reverse engineer and crack_ |
| 79 | + |
| 80 | +### Binary Exploitation / Pwn |
| 81 | + |
| 82 | +> Binary Exploitation involves taking a program, reverse engineering it to identify vulnerabilities within a program, and finally exploiting it in order to get access to a remote system or modifying the functionality of the program. |
| 83 | +{:.prompt-info} |
| 84 | + |
| 85 | +- [Nightmare](https://guyinatuxedo.github.io/00-intro/index.html) - _collection of pwn writeups on different topics. learn by examples!_ |
| 86 | +- [RopEmporium](https://ropemporium.com/index.html) - _guide and practice on some pwn stuff_ |
| 87 | +- [Pwn College](https://pwn.college/) - _covers all kind of pwn concepts from beginner to advanced_ |
| 88 | +- [Modern Binary Exploitation](https://github.com/RPISEC/MBE) - _old but gold resources, from [rpisec](https://rpis.ec/about/)_ |
| 89 | + |
| 90 | +Abit of a shameless plug, and still empty at the moment but watch this page for a zero to hero pwn guide! |
| 91 | + |
| 92 | +- [my pwndocs](https://pwn.elmo.sg/) |
| 93 | + |
| 94 | + |
| 95 | +### Forensics |
| 96 | + |
| 97 | +> Forensics is the art of recovering the digital trail left on a computer. There are plently of methods to find data which is seemingly deleted, not stored, or worse, covertly recorded. |
| 98 | +{:.prompt-info} |
| 99 | + |
| 100 | +Digital Forensics is typically such a broad topic, and there is no one stop resource to learn about it. |
| 101 | + |
| 102 | +However you can look at [CTF101](https://ctf101.org/forensics/overview/) to see some common topics that you can google and do more research about! |
| 103 | + |
| 104 | +### Cryptography |
| 105 | + |
| 106 | +> Cryptography as a topic is about implementing complex and unbreakable encryption algorithms in order to secure our data online. In CTFs, we look at the math behind these algorithms and find ways to target weaknesses in these algorithms in order to break weak implementations of them. In general, just mathy stuff D: |
| 107 | +{:.prompt-info} |
| 108 | + |
| 109 | +- [CryptoHack 🥇](https://cryptohack.org/challenges/) - _one of the most popular and exhaustive crypto platform out there_ |
| 110 | +- [cryptopals](https://cryptopals.com/) |
| 111 | + |
| 112 | +### Web Exploitation |
| 113 | + |
| 114 | +> Web Exploitation involves finding vulnerabilities in web applications and exploiting it to gain some kind of higher privileges. |
| 115 | +{:.prompt-info} |
| 116 | + |
| 117 | +- [PortSwigger 🥇](https://portswigger.net/web-security) - _cover many different classes of web vulnerabilties with practical labs_ |
| 118 | +- [Lord of the SQLi](https://los.rubiya.kr/) - _deep dive into SQL injection with basic to advanced challenges_ |
| 119 | +- [Websec.fr](https://websec.fr/) - _another practice platform with web challenges_ |
| 120 | + |
| 121 | +### Blockchain Security |
| 122 | + |
| 123 | +> Blockchain involves the auditing of Smart Contracts to find exploitable bugs _(usually more logical bugs unlike pwn)_ that can potentially be used to steal money out of a Smart Contract. |
| 124 | +{:.prompt-info} |
| 125 | + |
| 126 | +- [Ethernaut](https://ethernaut.openzeppelin.com/) - _beginner friendly guide to smart contract vulnerabilities with practices_ |
| 127 | +- [onlypwner.xyz](https://onlypwner.xyz/) - _practice platform with smart contract challenges_ |
| 128 | + |
| 129 | +## Tools ⚒ |
| 130 | + |
| 131 | +In order to solve different kinds of complicated problems, we have to learn to use different set of tools to approach it. |
| 132 | + |
| 133 | +### Pwn / Binary Exploitation / Reverse Engineering |
| 134 | + |
| 135 | +- [IDA Pro](https://hex-rays.com/ida-pro/) / [Binary Ninja](https://binary.ninja/) / [Ghidra](https://ghidra-sre.org/) - _disassembler/decompiler to reverse engineer any executables_ |
| 136 | +- [WinDBG](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/) / [x64dbg](https://x64dbg.com/) - _useful debugger for windows programs_ |
| 137 | +- [GDB](https://sourceware.org/gdb/) - _debugger for linux programs_ |
| 138 | +- [PwnDBG](https://github.com/pwndbg/pwndbg) / [GEF](https://github.com/hugsy/gef) - _extensions for GDB which makes it much more usable_ |
| 139 | +- [PwnTools](https://github.com/gallopsled/pwntools) - _automation when interacting with programs and remote services_ |
| 140 | + - [one\_gadget](https://github.com/david942j/one_gadget) - _find one gadgets in a program_ (installed with Pwntools) |
| 141 | + - [ROPgadget](https://github.com/JonathanSalwan/ROPgadget) - _find ROPgadgets in a program_ (installed with Pwntools) |
| 142 | +- [SysInternals Suite](https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite) - _trace what a windows program does when ran_ |
| 143 | +- [JADX](https://github.com/skylot/jadx) / [JEB](https://www.pnfsoftware.com/) - _decompile android APKs to java code_ |
| 144 | +- [Angr](https://angr.io/) - _symbolic execution_ |
| 145 | +- [Unicorn](https://www.unicorn-engine.org/) - _binary emulation_ |
| 146 | + |
| 147 | +### Web Exploitation |
| 148 | + |
| 149 | +- [Burpsuite](https://portswigger.net/burp) - _suite of tools to manipulate web traffic_ |
| 150 | +- [curl](https://curl.se/) / [httpie](https://httpie.io/) - _command line tools to directly send a request to a website_ |
| 151 | +- [requests](https://pypi.org/project/requests/) / [beautifulsoup](https://pypi.org/project/beautifulsoup4/) - _python libraries to automate website interaction_ |
| 152 | +- [dirsearch](https://github.com/maurosoria/dirsearch) - _brute force website paths_ |
| 153 | + |
| 154 | +### Forensics / Miscellaneous |
| 155 | + |
| 156 | +- [CyberChef](https://gchq.github.io/CyberChef/) - _all kind of byte manipulation_ |
| 157 | +- [AperiSolve](https://aperisolve.fr/) - _one stop solution to image steganograph_ |
| 158 | +- [binwalk](https://github.com/ReFirmLabs/binwalk) - _identifying/extracting embedded files_ |
| 159 | +- [FTK Imager](https://www.exterro.com/digital-forensics-software/ftk-imager) / [Autopsy](https://www.autopsy.com/) - _analyze disk/image files_ |
| 160 | +- [Wireshark](https://www.wireshark.org/) - _analyze network packet captures_ |
| 161 | +- [Volatility](https://github.com/volatilityfoundation/volatility3) - _used to analyze memdump of an entire computer_ |
| 162 | +- [Crackstation](https://crackstation.net/) - _look up known hashes_ |
| 163 | +- [John](https://www.openwall.com/john/) - _used to brute force hashes_ |
| 164 | + |
| 165 | +### Cryptography |
| 166 | + |
| 167 | +- [SageMath](https://www.sagemath.org/) - _python with additional cryptography math functions_ |
0 commit comments