# SQL injection 💉💉

## level 1
- dùng comment

hoặc

- dùng luận lí

and trước vậy là false
rồi đến or thì chắc chắn admin đúng
## level 2
dùng dấu double quote

## level 3
chú ý đóng dấu ngoặc

## level 4

cấm double quote
ở username dùng backslash để vô hiệu hóa đi 1 double quote của dev
ở pass thì thêm phần luận lí or để yêu cầu name admin

## level 5
ở phần này anh dev lấy username trước
sau đó dựa vào user name để truy vấn ra password và so sánh với password của người nhập
tuy nhiên đấy là hash md5
vậy dù có truy vấn đến password của admin thì ta cùng không làm gì được với md5
vậy ta sẽ thao túng luôn cả password (tự đặt password cho mình luôn)

dùng UNION SELECT để đặt lại pass
tuy nhiên phải hash sang md5
ở đây mình hash từ 'tung'
vậy khi đến if đã so chính xác
## level 6
bài này truy suất database
đầu tiên tìm tên mảng
dùng GROUP_CONCAT() thì in ra rất nhiều nên ta lọc bằng việc sử dụng database()


trả về cho ta hai bảng
giờ sẽ lấy tiếp cột column


ở cả hai bảng đều có cột content vậy ta sẽ đọc thử content của post hoặc secret


đổi sang secret


## level 7

có 1 câu sql ngay phần đăng nhập tuy nhiên ta thấy không có unstrusted data rơi vào -> loại

kiểm tra cốt xuất ra , nếu tồn tại thì sẽ đi vào profile.php

bên này thì có phần check tên người dùng , nếu chưa dăng nhập thì return về trang đăng nhập
vậy để đi qua được đây mà không bị trả về thì chắc chắn ta phải đăng nhập

ta thấy có biến username rơi vào câu sql :handbag:
vậy thao túng username thôi


như vậy đã đọc được thônng tin về user
giờ thử đọc nội dung cột password


## level 8
bài này gần như bài trên tuy nhiên chú ý


check username chỉ có admin mới tìm được flag
vậy khả năng là chỉnh lại password của admin rồi đăng nhập vào

ở đây có phần update email vậy có thể lợi dụng để update password cho admin

ở đây lợi dụng update email , update có password luôn
tuy nhiên chú ý phải hash md5 password lại
ở đây mình hash chữ 'admin' và log bằng username admin lun


## Unholy Union
### Overview
**SQL inject nhưng lưu ý phần commment để bypass `%` là `-- -`**
```url
aa' union select null , null , null , null , (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema = database()) -- -
```
câu query sẽ như sau
```url!
SELECT * FROM inventory WHERE name LIKE '%aa' union select null , null , null , null , (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema = database()) -- -%'
```
và ta được tên các table

get flag thoi
```url!
aa' union select null , null , null , null , (SELECT GROUP_CONCAT(flag) FROM flag) -- -
```
