跳转到主内容
极星编程网:以代码为星,赴技术山海!

彻底解决Meterpreter中文乱码问题

关注【 潇湘信安 】、【 Hack分享吧 】公众号,一起学网络安全知识!

Meterpreter会话进入shell执行DOS命令时会出现中文乱码的情况,是因为Windows命令终端默认活动代码页为:936(ANSI/OEM-简体中文GBK),与Linux命令终端默认(Unicode-UTF-8)编码不一致,所以返回的中文字符会显示乱码。

MS-DOS为以下国家和语言提供字符集: 编号语言编号语言4377087208508528558578608618628638658668698749329369499501200120112501251125212531254美国阿拉伯文(ASMO 708)阿拉伯文(DOS)多语言(拉丁文I)中欧(DOS)西里尔文(俄语)土耳其语葡萄牙语冰岛语希伯来文(DOS)加拿大-法语日耳曼语俄语-西里尔文(DOS)现代希腊语泰文(Windows)日文(Shift-JIS)简体中文(GB2312)韩文繁体中文(Big5)UnicodeUnicode(Big-Endian)中欧(Windows)西里尔文(Windows)西欧(Windows)希腊文(Windows)土耳其文(Windows)125512561257125820866218662859228593285942859528596285972859838598500005000150220502215022250225509325094951932519495293665001希伯来文(Windows)阿拉伯文(Windows)波罗的海文(Windows)越南文(Windows)西里尔文(KOI8-R)西里尔文(KOI8-U)中欧(ISO)拉丁文3(ISO)波罗的海文(ISO)西里尔文(ISO)阿拉伯文(ISO)希腊文(ISO)希伯来文(ISO-Visual)希伯来文(ISO-Logical)用户定义的自动选择日文(JIS)日文(JIS-1)日文(JIS-2)韩文(ISO)日文(自动选择)韩文(自动选择)日文(EUC)韩文(EUC)简体中文(HZ)Unicode (UTF-8) 0x01 chcp命令解决中文乱码 使用chcp命令将当前Windows命令终端的活动代码页设置为“65001 - Unicode(UTF-8)”即可,这种方式只能用来临时解决部分中文乱码问题,可以正常显示英文,但不能显示中文。

C:\Users\*******\Desktop>chcp 65001

注: 但不知为何Windows版的Metasploit中文字符也会乱码,按理说当前Windows命令终端与反弹回来的Windows命令终端活动代码页都是936,不应该再出现乱码的啊,搞不懂了!

只能先用chcp 60001临时解决了,唯一的好处就是↑↓←→等特殊按键不会出现乱码。

0x02 修改编码解决中文乱码 将本地Linux命令终端或SSH客户端的编码改为“简体中文-GBK、GB2312、GB18030”即可,或者在Kali命令终端菜单栏中的“终端”->“设定字符编码”处设置,这种方式可以完全解决反弹回来的Windows命令终端中文乱码问题。

注: Delete、Backspace按键乱码情况也可以在这里设置,不过像Ctrl、Shift组合键和Esc、Home、End、PgUp、PgDn、F1-F12(除F11),以及↑↓←→这类特殊按键的乱码到目前为止还没能找到更好的解决办法,这类乱码属于ANSI Escape控制码。

0x03 rlwrap解决特殊按键乱码 进入Meterpreter shell或者用netcat得到的shell后都不能直接使用上下左右等特殊按键,会显示乱码^[[A^[[B^[[D^[[C,想象一下在渗透测试过程中不能在shell下使用“上下键”查看历史命令,“左右键”来移动光标修改命令得有多难受,而且极其影响效率,有过这样经历的人肯定都知道!

以前也尝试过很多方法都没能解决这个问题,最近了解到rlwrap这个工具后才发现能够完美解决,直接执行以下命令安装即可,最后用rlwrap来启动metasploit就可以了。

下载地址: https://pkgs.org/download/rlwrap

root@kali:~# apt-get install rlwrap

0x04 参考链接 https://en.wikipedia.org/wiki/Code_page https://en.wikipedia.org/wiki/ANSI_escape_code https://zh.wikipedia.org/wiki/字符编码

相关文章