---
# System prepended metadata

title: Blind SQL injection with conditional responses
tags: [SQL injection]

---

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


