中文路径写webshell报错解决办法
昨天遇到一个Mssql注入,sa权限。然后注出的sa密码解不开。这时我就想用 sqlmap os-shell 直接写个webshell,然后,,开启了我的苦逼之旅。。。
mssql注入,如果要执行命令就缺不了一个大家都熟悉的组件xp_cmdshell。这里管理员把这个组件禁用了,直接sqlmap下一路回车先把它恢复了。有时候会碰到xp_cmdshell被删那还可以想办法把它再装上,有些马子有这个功能。
进入以后先探测下服务器的盘符有哪些。cmd下执行 dir c: dir d:等等。确定存在c、d盘。
找目录。首先dir /s/b c:see_ymzjback.aspx 找网站目录,c盘无回显。发现在d盘,目录
D:\网站\DotNetCMS\DotNetCMS\Foosun.Web\manage\
复制代码
之后就是写一句话,写入过程报错。
上面看到已经标准输出了但是还是无结果。我想估计有杀软,然后写个txt试试发现也有输出,但是搜索还是没有存在。
这里我还试着往d盘根目录写文件,txt 一句话均能写入。但是一写到网站目录就不行。我猜想写入不了跟中文路径有关系。这时我去问了下表哥,表哥告诉我应该与编码有关。然后我就开始折腾了变化slqmap的编码,变终端的编码等等折腾了好久。没成功,其实也没作用,因为改变这些编码影响不到sqlmap输出的payload的编码。
期间,去问了一个表哥思路,他直接给我一个命令,一看就明白了,思路是写bat在执行bat写文件(第一次知道这个思路感觉很骚,表哥经验多)。
1.echo "echo 123 > D:\网站\DotNetCMS\DotNetCMS\Foosun.Web\manage\123.txt" > D:\12.bat"
复制代码
然后也失败了。。
这时候想起去google了(百度搜狗无想要结果),发现好几个人博客都写过这个问题,打开发现有人解决了有人没解决。其中一个解决了的表哥,用他的办法却没成功。我正好认识这个表哥于是直接去问他。
他告诉我他的sqlmap 当时的 payload 其中的中文路径是乱码的,用hex编码解码后在重新编码就好了。
这个乱码是和linux终端有关系的,因为终端默认是unicode编码,然后我们输入的payload中的中文路径也会被unicode,我用burp拦截发现确实是这样的。心中大喜,马上把中文路径换成hex编码在替换那个unicode编码。结果。。。。发现不行,结果现在的心情已经想砸电脑了。
这时候也有个想法了,直接手注,正好最近接触了很多注入。
然后直接。
see_ymzjback.aspx?title=1';exec master..xp_cmdshell 'echo 123 >d:\网站\DotNetCMS\DotNetCMS\Foosun.Web\manage\1234.asp'--
复制代码
这是个堆叠注入属于盲注,看回显不报错基本上就执行了。结果呢没有报错,直接去浏览器打开文件可以直接打开原来这么简单。。。
然后就是写shell发现怎么也写不上去,slqmap下 tasklist发现有360网站卫士。。
1.http://www.cfjt.gov.cn/manage/see_ymzjback.aspx?title=1';exec master..xp_cmdshell 'taskkill /f /t /im 360WebSafe.exe'--
复制代码
发现结束不了。之后又开始找马子找了很多asp(x)马子都过不了。这时已很晚了就睡觉了。然后第二天起来想继续搞,发现网站打不开了可悲啊。。
其实这里还是挺高兴的,终于能上传了。
顺便在这里总结下。之前写入不了还是因为编码问题,手注的payload是url编码,而且中文路径不会被工具二次加工,所以能成功执行。这就是中文路径的解决办法啦嘿嘿
PS:这里的思路很多我只是想要实现Mssql在中文路径下写webshell而已。另外还可以翻web管理员帐号密码,通过注入load网站配置文件,系统配置文件等等、、、另外一篇文章讲了这么多思路,有金币啥的同学不要吝啬啊
PS:留个问题给予读者朋友,bat写入的payload为什么也不能写入网站目录呢。