SQLServer注入技巧

 

SQLServer注入技巧

一、对于SA权限的用户执行命令,如何获取更快捷的获取结果?

  • 有显示位
  • 无显示位

其实这里的关键并不是有无显示位。exec master..xp_cmdshell 'systeminfo'生成的数据写进一张表的时候,会产生很多行。而我们要做的就是如何很多行通过显示位、或者报错语句一次性爆出来,这里的关键就是多行合一。

方法①


解析:

  • [email protected]
  • 设置初始值为’~’;将test_1中的数据数据依次取出来,迭代条件是output>’ ‘,并组合成新的字符串,[email protected]
  • [email protected],然后插入test_2中。
  • 最后报错回显
    PS:
  • mssql英文字母比较大小不区分大小写
  • mssql字符串比较大小和C语言中的str_cmp()一样的道理

方法②(注入点测试成功、测试平台SQL Server2008- 10.0.1600.22 (X64)

  • 报错:AND (SELECT * FROM test_1 FOR XML PATH(''))=1--
  • 显示:UNION SELECT 1,(SELECT * FROM test_1 FOR XML PATH(''))--

二、如何快速寻找网站目录(SA用户)

  • SA用户被降权
  • SA用户未被降权

这里区分降权与非降权是有道理的,如果没有被降权。那么权限很高就可以读取某些保存在本机的配置了,如果权限低一点的话,可以使用dir命令查找。

方法①(被降权:–亲测成功):

方法②(未被降权–system–亲测成功):

方法③(sa+system权限+IIS7.0+IIS7.5):

%systemroot%/system32/inetsrv/appcmd.exe list site ——列出网站列表
%systemroot%\system32\inetsrv\appcmd.exe list vdir ——列出网站物理路径

PS:
%systemroot%代表c:\windows\

三、如何利用注入点getshell

方法①(差异备份)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试

方法②(减小体积)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试


PS:

  • 如果不能备份,很有可能是访问权限的问题。可以切换目录尝试
  • 如果表存在,也不能成功;所以先判断表是否存在,如果存在就删除。

方法③(echo 输出一句话木马)–sa权限+当前用户写权限–亲测成功


PS:

  • 这里由于是注入点,因此需要注意编码的问题。一般来说,网页的编码和数据库的编码是一致的(如果不一致~~~算我输)。这里我用了一个中文路径做说明

四、如何避免使用select之类的关键字

方法①:十六进制混淆

五、登录点的注入如何最快获取后台密码

六、结语

这篇文章是很久以前整理的,有些地方可能有不对之处,希望大家能够指出。

4 评论

  1. 这里的echo写入是不是因为发布到网站上面,导致了自动编码了? 实际情况下并不是这样写入的吧。
    文章总结的不错,转发到我博客了,会保留原文链接。

    1. 这里的echo写入是因为利用点在注入的地方,写入的东西东西需要经过url编码才能被服务器识别。

发表评论

电子邮件地址不会被公开。 必填项已用*标注