# 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)