彻底解决Meterpreter中文乱码问题

关注【潇湘信安】、【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/字符编码

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
彻底解决 Spring MVC 的乱码问题,可以按照以下步骤进行操作: 1. 在 web.xml 配置文件中添加一个字符编码过滤器: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这个过滤器会将所有请求和响应的字符编码设置为 UTF-8。 2. 在 Spring MVC 的配置文件中设置字符编码过滤器: ```xml <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> ``` 这个配置会在处理请求和响应时使用 UTF-8 编码。 3. 确保项目中所有的 JSP 页面都设置了正确的字符编码: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> ``` 通过以上步骤,你应该能够彻底解决 Spring MVC 的乱码问题。请注意,确保你的项目中使用的字符编码一致,一般推荐使用 UTF-8 编码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值