# 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. ![Capture02](https://hackmd.io/_uploads/Byw9jmOUa.png) * Đầ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. ![Capture03](https://hackmd.io/_uploads/HkxPqi7dUa.png) ![Capture04](https://hackmd.io/_uploads/rJdqjX_Ia.png) * 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. ![Capture05](https://hackmd.io/_uploads/S18qsQOU6.png) * 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. ![Capture06](https://hackmd.io/_uploads/SkIqsQdUp.png) ![Capture07](https://hackmd.io/_uploads/ryLqoXuIT.png) ![Capture08](https://hackmd.io/_uploads/S1ekeE_LT.png) ![Capture09](https://hackmd.io/_uploads/SyB1gNO8a.png) * 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. ![Capture27](https://hackmd.io/_uploads/BJD9jQuLp.png) * 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. ![Capture28](https://hackmd.io/_uploads/Bke8ci7dI6.png)