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

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)”即可,这种方式只能用来临时解决部分中文乱码问题,可以正常显示英文,但不能显示中文,如图8-12-2。

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

图片2.png
图8-12-2 chcp设置活动代码页为65001

注:但不知为何Windows版的Metasploit中文字符也会乱码,按理说当前Windows命令终端与反弹回来的Windows命令终端活动代码页都是936,不应该再出现乱码的啊,搞不懂了!只能先用chcp 60001临时解决了,唯一的好处就是↑↓←→等特殊按键不会出现乱码。

0x02 修改编码解决中文乱码

将本地Linux命令终端或SSH客户端的编码改为“简体中文-GBK、GB2312、GB18030”即可,或者在Kali命令终端菜单栏中的“终端”->“设定字符编码”处设置,这种方式可以完全解决反弹回来的Windows命令终端中文乱码问题,如图8-12-3、8-12-4。
图片3.png
图8-12-3 修改命令终端编码为GB2312
图片4.png
图8-12-4 ↑↓←→等这类特殊按键的乱码

注: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就可以了,如图8-12-5、8-12-6。

  • 下载地址:https://pkgs.org/download/rlwrap
    1. root@kali:~# apt-get install rlwrap
    图片5.png
    图8-12-5 使用apt-get命令安装rlwrap
    图片6.png
    图8-12-6 利用rlwrap来启动metasploit

0x04 参考链接

  1. https://en.wikipedia.org/wiki/Code_page
  2. https://en.wikipedia.org/wiki/ANSI_escape_code
  3. https://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81

public.png