---
# System prepended metadata

title: Bypassing rate limits via race conditions
tags: [Race conditions]

---

# Bypassing rate limits via race conditions

* Bài lab này có gợi ý cho chúng ta có lỗ hổng race condition ở tính năng login. Yêu cầu của bài lab là chúng ta sẽ khai thác lỗ hổng race condition để login vào account của user `carlos`, vào Admin panel và xóa user `carlos`. Trước tiên ta sẽ kiểm tra tính năng login trước, như hình dưới, nếu chúng ta login sai quá 3 lần thì account sẽ bị khóa.
![Capture01](https://hackmd.io/_uploads/BJiF08UPa.png)

* Để kiểm tra kĩ hơn, ta sẽ gửi 20 request `POST /login` đến Repeater và nhóm chúng lại. Dùng **Send group (parallel)** để gửi 20 request cùng lúc. Sau khi gửi, chúng ta sẽ thấy được dù sử dụng account không tồn tại nhưng số response có phản hồi **Invalid username or password** lại khá nhiều dù đã login sai hơn 3 lần.
![Capture03](https://hackmd.io/_uploads/rJiK0IUvp.png)

* Bây giờ chúng ta sẽ brute-force password của user `carlos`. Ta sẽ dùng Turbo Intruder để gửi request nhanh hơn, đặt vị trí payload ở password và chọn `race-single-packet-attack.py`. Chúng ta sẽ chỉnh sửa lại để phù hợp với bài lab. Copy danh sách pasword vào Clipboard và nhấn **Attack**.
![Capture04](https://hackmd.io/_uploads/SyjYCI8DT.png)

* Kết quả trả về có 1 request có status code là `302`. Đây chính là password cần tìm.
![Capture05](https://hackmd.io/_uploads/HysYCIIP6.png)

* Sử dụng password để đăng nhập account của user `carlos`.
![Capture06](https://hackmd.io/_uploads/HJit0UUP6.png)

* Vào Admin panel và xóa user`carlos`. Hoàn thành bài lab.
![Capture07](https://hackmd.io/_uploads/ByjFAIIP6.png)
![Capture08](https://hackmd.io/_uploads/B1iYRULPT.png)
