关注【
潇湘信安
】、【
Hack分享吧
】公众号,一起学网络安全知识!
Meterpreter会话进入shell执行DOS命令时会出现中文乱码的情况,是因为Windows命令终端默认活动代码页为:936(ANSI/OEM-简体中文GBK),与Linux命令终端默认(Unicode-UTF-8)编码不一致,所以返回的中文字符会显示乱码。
MS-DOS为以下国家和语言提供字符集:
|
|
|
|
437 708 720 850 852 855 857 860 861 862 863 865 866 869 874 932 936 949 950 1200 1201 1250 1251 1252 1253 1254 |
美国 阿拉伯文(ASMO 708) 阿拉伯文(DOS) 多语言(拉丁文I) 中欧(DOS) 西里尔文(俄语) 土耳其语 葡萄牙语 冰岛语 希伯来文(DOS) 加拿大-法语 日耳曼语 俄语-西里尔文(DOS) 现代希腊语 泰文(Windows) 日文(Shift-JIS) 简体中文(GB2312) 韩文 繁体中文(Big5) Unicode Unicode(Big-Endian) 中欧(Windows) 西里尔文(Windows) 西欧(Windows) 希腊文(Windows) 土耳其文(Windows) |
1255 1256 1257 1258 20866 21866 28592 28593 28594 28595 28596 28597 28598 38598 50000 50001 50220 50221 50222 50225 50932 50949 51932 51949 52936 65001 |
希伯来文(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/字符编码