当前位置:   article > 正文

特洛伊木马源攻击_不支持unicode显示定向格式化字符

不支持unicode显示定向格式化字符

cve-2021-42574
特洛伊之源的漏洞机制

其实这个 Unicode 漏洞只要是玩过 QQ / 微信的,大部分人都利用过:你肯定改过你的qq签名,让大家看到语句是从右到左的逆向显示。

严格来说,它也不算是漏洞,只是 Unicode 的一种特性。但因为Unicode 的设计缺陷,就很容易被利用实施恶意攻击,而 视觉欺骗,是最常见考虑最多的 Unicode 安全问题。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

为了兼容世界各地不同的语言书写习惯,Unicode 引入了双向算法来控制文本显示顺序。大多数语言的文本在水平方向都是按从左到右(Left To Right,简称LTR)的顺序显示字符的,但也有不少语言是按从右到左(Right To Left,简称RTL)的顺序显示字符的(比如阿拉伯语、希伯来语)。当然还有按垂直方向书写的文本,比如中国古代的汉字、蒙语就是从上到下从右到左书写的。

Unicode 标准内规定两种文本顺序:在内存中表示的顺序为逻辑顺序,而最终显示的文本顺序为显示顺序。文本的逻辑顺序和显示顺序并不一定会一致。

Unicode 中如果出现 双向文本 ,若不明确确定文本的显示顺序,在显示的时候就会出现歧义。特洛伊之源攻击利用的就是这一点!

Unicode 引入 定向格式化字符 来解决这个问题。比如,使用RLO控制符来控制字符从右向左显示,PDF表示RLO的终止字符,那么ab cd RLO EF GH PDF x,将被显示为ab cd HG FE x 。

除了双向显示之外,Unicode 还提供一些同形字符 和隐藏字符等,这些都是构成了 视觉欺骗 攻击的特性基础。
L3HCTF的一道题
当时沉迷于什么什么杯中,所以没怎么打
现在来记录一下

<?php
error_reporting(0);
if ("admin" == $_GET[username] & ‮⁦ + !!⁩⁦ & "‮⁦CTF⁩⁦l3hctf" == $_GET[‮⁦L3H⁩⁦password]) { //Welcome to
    include "flag.php";
    echo $flag;
}
show_source(__FILE__);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

抓包发现是php7.4
我们知道show_source会将网页代码加上代码高亮,这里注释的RGB说明注释并不是看起来的注释。
通过复制粘贴源码也好,选择里面的关键字也好,能看到里面有控制字符
在这里插入图片描述
然后把它的控制字符一起传上去就行
就能得到flag,这道题只是这个漏洞的一个表现而已
它还可以表现为

李代桃僵:同形字符攻击
fn say_hello() {
println!(“Hello, World!\n”);
}

fn say_һello() {
println!(“Goodbye, World!\n”);
}

fn main() {
say_һello();
}
图片中代码里有两个 say_hello 函数,但实际上函数名不一样,main 函数里调用的是被篡改过的函数,有种李代桃僵的感觉。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/1013297
推荐阅读
  

闽ICP备14008679号