Panduan persiapan kompetisi Attack Defense — mencakup web exploitation, network penetration testing, binary exploitation, crypto attacks, serta teknik defense & hardening. Berdasarkan direktori riset di research-resource-directory-deep dan strategi di ctf-competition-methodology-strategy. Target: 15 menit per service exploitation, 5 menit per patch.
Attack Defense adalah format kompetisi tim: setiap tim punya infrastruktur sendiri (biasanya VM/server) dengan service yang vulnerable. Tim lawan berusaha menyerang service kita, sementara kita harus menjaga service tetap up dan flags tidak dicuri.
Cycle
ROUND 1 (5-15 menit)
├── Attack: Scan network, identifikasi service lawan, exploit
├── Defense: Patch service, harden konfigurasi, pasang monitoring
└── Check: System check apakah service masih berfungsi
ROUND 2...
Scoring
Aksi
Poin
Flag capture (attack)
+N poin per flag
Service up (defense)
+M poin per round
Flag loss (kebobolan)
-P poin
Service down (crash)
-Q poin
Prioritas: Defense score + Service availability > Attack score. Menjaga service tetap up adalah prioritas #1.
S2 — Web Exploitation Checklist
Tool Stack
# Burp Suite — intercept dan manipulate request# SQLMap — SQL injection automation# Nuclei — template-based vulnerability scanner# Gobuster — directory/file enumeration# Nikto — web server scanner
msfconsole# Search exploitmsf6 > search apache# Use exploitmsf6 > use exploit/multi/http/struts2_content_type_ognlmsf6 > set RHOSTS 10.10.10.10msf6 > set RPORT 8080msf6 > run
Arch: amd64-64-littleRELRO: Full RELROStack: Canary found ← Buffer overflow harderNX: NX enabled ← No shellcode on stackPIE: PIE enabled ← Address randomized
python -c "from Crypto.Util.number import *; print(long_to_bytes(pow(ct, e, n)))"
Cube root
Vigenere
vigenere-decoder
Kasiski examination
Hash crack
hashcat -m 0 hash.txt rockyou.txt
Dictionary attack
AES-ECB
Detect block pattern
Block manipulation
RSA Common Attack
# Small e attackfrom Crypto.Util.number import long_to_bytes, inverseimport gmpy2m = gmpy2.iroot(ct, e)[0]print(long_to_bytes(int(m)).decode())# Common modulus (same n, different e)g, x, y = gmpy2.gcdext(e1, e2)m = pow(ct1, x, n) * pow(ct2, y, n) % nprint(long_to_bytes(m))