# Blind SQL injection with conditional responses
* Yêu cầu của bài lab là chúng ta dùng SQLi để lấy password của user `administrator` và login. Thông tin về table `users` và 2 column trong đó là `username, password` cũng được cho trước. Tuy nhiên loại SQLi ở lab này là Blind SQLi, tức là nó sẽ không trả về thông báo lỗi nào.
* Trước tiên xem thông tin request `GET /filter?category=Gifts`, chúng ta thấy trong cookie có chứa `TrackingId=...`. Chúng ta có thể sử dụng cookie này để gửi query.

* Đầu tiên chúng ta sẽ thêm thử lần lượt hai payload `' AND '1'='1` và `' AND '1'='2`. Với payload đầu tiên, kết quả query là `True` thì như ta thấy trong response sẽ có chuỗi `'Welcome back!'` còn payload thứ hai với kết quả query là `False` thì response không có chuỗi này. Chúng ta sẽ sử dụng dữ kiện này để làm tiếp.


* Chúng ta sẽ đưa request `GET /filter?category=Gifts` qua Intruder, thêm payload `' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator') = 'a`. Vị trí payload sẽ là ngày kí tự `'a'` cuối query còn payload theo gợi ý của bài lab là các kí tự chữ cái thường và số tự nhiên. Ý nghĩa của query là khi mà chữ cái đầu tiên của password của user `administrator` trùng với payload brut-force thì sẽ trả về response có chuỗi `'Welcome back!'`. Từ đó ta sẽ brute-force được toàn bộ password.

* Như chúng ta thấy sau khi brute-force, chúng ta đã tìm ra kí tự đầu tiên trong password là `'6'`. Chúng ta sẽ tăng số thứ tự lên 2 để tiếp tục brute-force các kí tự tiếp theo.




* Cứ tiếp tục cho đến lần thứ 21, chúng ta không còn thấy response chứa chuỗi `'Welcome back!'` nữa. Vậy password chúng ta chỉ có 20 kí tự thôi.

* Sau khi brute-force, ta được password là `67sb09ncqzzjux6uprrt`, lấy password này login vào user `administrator` và thành công. Hoàn thành bài lab.
