# CTF Categories
Βλέπε και [CTF101](https://ctf101.org/).
## General Resources
Παρακάτω αναφέρονται κάποια sites που hostάρουν ctf challenges όλων των κατηγοριών. Πολλά έχουν tutorials είτε πηγαίνουν easy 2 hard, οπότε αξίζει φουλ να τα τσεκάρετε για να μάθετε stuff:
* [Tryhackme](https://tryhackme.com/)
* [HackTheBox](https://www.hackthebox.com/)
* [Root-Me](https://www.root-me.org/?lang=en)
* [PicoCTF](https://play.picoctf.org/)
* [VulnHub](https://www.vulnhub.com/)
* [samclass](https://samsclass.info/)
Και επίσης υπάρχουν τα wargames που ουσιαστικά πρόκειται για machines με πίστες που ο σκοπός είναι να τις περάσεις όλες:
* [OverTheWire](https://overthewire.org/wargames/)
## Web
Αφορά τον εντοπισμό τρωτών σημείων σε servers και την εκμετάλλευση αυτών για απόκτηση πρόσβασης σε λογαριασμούς χρηστών, εύρεση τοπικών αρχείων του μηχανήματος που τρέχει τον σερβερ, εκτέλεση κώδικα, απόκτηση reverse shell κ.α.
Κύριες τεχνικές:
* SQL Injection
* LFI (Local File Inclusion)
* RCE (Remote Code Execution)
* Server Side / Cross Site Request Forgery
* Cross Site Scripting
* Server Side Template Injection
* XML Injection
**Basic Attacks with simple explanations:** https://bit.ly/3eRyC1S
**Intermediate level materials but well explained, along side with labs and solutions:** https://bit.ly/3dFLjge
**Latest research on the web, mostly advanced stuff:** https://bit.ly/2XGf6zY
**Resources:**
[Portswigger](https://portswigger.net/web-security)
[PentesterLab](https://pentesterlab.com/exercises)
[Hacker101](https://ctf.hacker101.com/)
## Crypto
Πρόκειται για challenges που αφορούν το σπάσιμο αλγορίθμων κρυπτογράφησης ή τον εντοπισμό τρωτών σημείων σε αυτούς με σκοπό τη μετατροπή ενός κρυπτογραφημένου μηνύματος σε απλό κείμενο
Σε αυτήν την κατηγορία εμπίπτουν αλγόριθμοι κρυπτογράφησης όπως
* RSA, Diffie-Hellman
* AES/DES
* Elliptic Curve
* One-Time Pad
* Hash Functions
* Στα πολύ απλά Caesar,Vigenere,XOR κτλ
**Resources:**
[Cryptohack](https://cryptohack.org/)
[Krypton](https://overthewire.org/wargames/krypton/)
## Rev
Στη γενική περίπτωση σου δίνεται ένα εκτελέσιμο πρόγραμμα και καλείσαι να κατανοήσεις πώς λειτουργεί, ώστε να μπορέσεις να εξαγάγεις την τιμή κάποιων μεταβλητών, το input που πρέπει να δώσεις, ακόμα και το ίδιο το flag. Γενικά ό,τι αντιστρέφεται μπορεί να μπει σε rev chall.
Για την επίλυση rev challenges απαιτείται κατανόηση εννοιών όπως:
* x86/ARM Assembly (exe,elf)
* .NET
* Malware analysis
* Virtual Machine Binaries
* Mobile Reversing
**Resources:**
[Learn x86 Assembly](https://www.youtube.co/watch?v=rxsBghsrvpI&list=PLKK11Ligqitg9MOX3-0tFT1Rmh3uJp7kA)
[Another x86/Arm Course](https://0xinfection.github.io/reversing/)
[Reverse Engineering 101](https://malwareunicorn.org/workshops/re101.html#0)
[Reverse Engineering 102](https://malwareunicorn.org/workshops/re102.html#0)
[OpenSecurityTraining2](https://p.ost2.fyi/)
[Begin.re](https://www.begin.re/)
[Crackmes.one](https://crackmes.one/)
(Book) [Secrets Of Reverse Engineering](https://repo.zenk-security.com/Reversing%20.%20cracking/Reversing%20-%20Secrets%20Of%20Reverse%20Engineering%20(2005).pdf)
(Book) [Windows Internals Part 1](https://repo.zenk-security.com/Linux%20et%20systemes%20d.exploitations/Windows%20Internals%20Part%201_6th%20Edition.pdf)
## Forensics
Αφορά την εξαγωγή πληροφορίας από αρχεία καταγραφών, στεγανογραφίας, εικόνες συστήματος, malware, γενικά είναι το κομμάτι του καλού χάκερ που ψάχνει να βρει ποιος και πώς πραγματοποίησε μια επίθεση.
Περιλαμβάνει:
* Pcap(ng)s
* Docker forensics
* Memory forensics
* Stego
**Memory Forensics**
**Volatility (most preferred)**
https://github.com/volatilityfoundation/volatility
https://github.com/volatilityfoundation/volatility/wiki/Command-Reference
https://digital-forensics.sans.org/media/memory-forensics-cheat-sheet.pdf
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet
**Volatility**
Volatility Part 1: https://bit.ly/cheatsheet-part-1
Volatility Part 2: https://bit.ly/cheatsheet-part-2
Volatility Part 3: https://bit.ly/cheatsheet-part-3
Volatility Part 4: https://bit.ly/cheatsheet-part-4
Volatility Part 5: https://bit.ly/cheatsheet-part-5
Volatility Part 6: https://bit.ly/cheatsheet-part-6
Volatility Part 7: https://bit.ly/cheatsheet-part-7
Volatility Part 8: https://bit.ly/cheatsheet-part-8
**Volatility Training**
https://github.com/stuxnet999/MemLabs
**Resources:**
ENISA: https://bit.ly/enisa-resources
https://bit.ly/trail-of-bits-fore
https://bit.ly/ctf-guide-fore
[CyberDefenders](https://cyberdefenders.org/blueteam-ctf-challenges/)
[Blueteamlabs](https://blueteamlabs.online/)
[LetsDefend](https://letsdefend.io/)
(Book) [The Art Of Memory Forensics](https://repo.zenk-security.com/Forensic/The%20Art%20of%20Memory%20Forensics%20-%20Detecting%20Malware%20and%20Threats%20in%20Windows,%20Linux,%20and%20Mac%20Memory%20(2014).pdf)
## Pwn
Όπως και στο reverse, έτσι κι εδώ καλείσαι να κατανοήσεις τη λειτουργία ενός δεδομένου εκτελέσιμου προγράμματος με την εξής διαφορά:
Υπάρχουν 2 instances του προγράμματος. Ένα τρέχει τοπικά κι ένα σε έναν απομακρυσμένο server στον οποίο αποθηκεύεται το flag. Το binary executable έχει κάποια τρωτά σημεία που επιτρέπουν στον επιτιθέμενο μέσω κατάλληλου input να διαβάσει περιοχές της στοίβας στις οποίες δε θα έπρεπε να έχει πρόσβαση, να εκτελέσει δικό του κώδικα, και γενικά να χρησιμοποιήσει το πρόγραμμα για να αποκτήσει πρόσβαση σε άλλους πόρους του συστήματος.
Έτσι, σε αντίθεση με το σκέτο reverse, εδώ το flag βρίσκεται σε μέρη του συστήματος / προγράμματος που δεν είναι ορατά στον χρήστη, καθώς βρίσκονται στον απομακρυσμένο σέρβερ (πχ φόρτωση του αρχείου flag.txt που υπάρχει μόνο στον server), ούτε προσπελάσιμα κατά την κανονική ροή του προγράμματος και καλείσαι να βρεις έναν τρόπο να αποκτήσεις πρόσβαση σε αυτά.
Περιλαμβάνει:
* Buffer Overflow
* Format String Vulnerabilities
* ROP Chains
* Heap Exploitation
**Resources:**
[Live overflow binary exploitation series](https://www.youtube.com/playlist?list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN)
[pwnable.xyz](https://pwnable.xyz/)
[ROP Emporium](https://ropemporium.com/)
[OpenSecurityTraining2](https://p.ost2.fyi/)
[Exploit Development Class](https://samsclass.info/127/127_S20.shtml)
(Book) [Hacking: The Art Of Exploitation](https://repo.zenk-security.com/Magazine%20E-book/Hacking-%20The%20Art%20of%20Exploitation%20(2nd%20ed.%202008)%20-%20Erickson.pdf)
Επίσης καλό είναι να κοιτάξετε και τα tutorials για x86 Assembly που βρίσκονται στην κατηγορία rev.
## Misc
Πρόκειται για challenges που δεν εμπίπτουν σε κάποια συγκεκριμένη κατηγορία
Παραδείγματα:
* Programming challenges
* Audio/Video challenges
**Resources:**
[leetcode](https://leetcode.com/)
## Hardware
Όπως γίνεται φανερό και από τον τίτλο, στη συγκεκριμένη κατηγορία τα challenges απαιτούν την ενασχόληση με το hardware (για παράδειγμα κάποια πλακέτας) διαφόρων αρχιτεκτονικών καθώς και του τρόπου με τον οποίο τα διάφορα components του (για παράδειγμα τα περιφερειακά που πιθανώς έχει κάποιος μικροελεγκτής) αλληλεπιδρούν μεταξύ τους.
**Resources:**
[microcorruption](https://microcorruption.com/map?fbclid=IwAR02Z3AZJ2_VewRk7ueRYqzm71lKaXjaYcVhSV_G32tdlx9FnLLeP_jDWc8)
[Live Overflow hardware ctf (rhme2)](https://www.youtube.com/playlist?list=PLhixgUqwRTjwNaT40TqIIagv3b4_bfB7M)