HacKerQWQ的博客空间

零宽度字符隐写

Word count: 704Reading time: 2 min
2020/10/13 Share

零宽度字符是什么

零宽度字符是一些不可见的,不可打印的字符。它们存在于页面中主要用于调整字符的显示格式,下面就是一些常见的零宽度字符及它们的unicode码和原本用途:

  • 零宽度空格符 (zero-width space) U+200B : 用于较长单词的换行分隔
  • 零宽度非断空格符 (zero width no-break space) U+FEFF : 用于阻止特定位置的换行分隔
  • 零宽度连字符 (zero-width joiner) U+200D : 用于阿拉伯文与印度语系等文字中,使不会发生连字的字符间产生连字效果
  • 零宽度断字符 (zero-width non-joiner) U+200C : 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果
  • 左至右符 (left-to-right mark) U+200E : 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右
  • 右至左符 (right-to-left mark) U+200F : 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左

如何查看零宽度字符

将信息隐藏在我爱中国中,可以去CyberChef粗略查看

可以看到有很多不可打印的字符隐藏在其中(使用https://yuanfux.github.io/zero-width-web/进行隐写的)
也可以在vim编辑器中查看

其中200f、200d这些对应上面提到的右至左字符和零宽度连字符

隐写的原理

每一种零宽度字符的隐写都有自己的隐写方式及加密方式,因此在一个网站加密之后在另一个网站解密很可能就不成功
文章参考:

注:加密和解密是一个可逆的过程,关键要用同一种方式加密解密

相关工具

在线解密[1]:(http://330k.github.io/misc_tools/unicode_steganography.html)
在线解密[2]:(https://offdev.net/demos/zwsp-steg-js)
在线解密[3]:(https://yuanfux.github.io/zero-width-web/)
在线解密[4]:(https://zero.rovelast.com/)

相关项目:

  1. (https://github.com/yuanfux/zero-width-lib)
  2. (https://github.com/rover95/morse-encrypt)

零宽度字符隐写的作用

  • 隐形水印
  • 逃脱敏感词匹配
  • 传递隐秘信息

例题:[UTCTF2020]zero

附件链接:(https://pan.baidu.com/s/1Ivadp2r9cbKjIZM2vSFDQw)
提取码:7vmf

下载得到txt文件,用CyberChef打开看到有零宽度字符

用上述的几个解密网站试一下,最终试出来

参考链接

本文转载自盖乐希师傅的文章(http://www.ga1axy.top/index.php/archives/20/)
盖乐希,yyds!

CATALOG
  1. 1. 零宽度字符是什么
  2. 2. 如何查看零宽度字符
  3. 3. 隐写的原理
  4. 4. 相关工具
  5. 5. 零宽度字符隐写的作用
  6. 6. 例题:[UTCTF2020]zero
  7. 7. 参考链接