特洛伊木马源攻击

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__);

抓包发现是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 函数里调用的是被篡改过的函数,有种李代桃僵的感觉。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M1kael

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值