[NISACTF 2022]checkin Unicode 双向控制字符(Bidi)混淆
364 字
2 分钟
[NISACTF 2022]checkin Unicode 双向控制字符(Bidi)混淆
- 1[WUSTCTF 2020]
- 2[HNCTF 2022 WEEK4]unf1ni3hed_web3he1 LFI + Session反序列化 + 条件竞争
- 3[安洵杯 2019]CSS Game CSS注入
- 4[NISACTF 2022]checkin Unicode 双向控制字符(Bidi)混淆本文
- 5[SWPUCTF 2025 秋季新生赛]FIRST MEETING PHP 反序列化 POP 链
- 6[UUCTF 2022 新生赛]funmd5 0e 碰撞与时间戳预测
本题在线靶场
代码审计

把它复制粘贴到vscodex里面

<?phperror_reporting(0);include "flag.php";// NISACTFWelcome toif ("jitanglailo" == $_GET[ahahahaha] &+!!& " Flag!N1SACTF" == $_GET[Ugeiwocuishiyuan]) { //tnnd! weishenme b echo $FLAG;}show_source(__FILE__);?>这下看清楚了,VS Code能显示出这些不可见字符的占位符— Unicode 控制字符
- [U+202E] (RLO):从这里开始,后面的字符强制从右向左显示。
- [U+2066] (LRI):开始一个从左向右的隔离区。
- [U+2069] (PDI):结束隔离区。
我们在脑海中把不可见字符替换为 [RLO]、[LRI]、[PDI]:
if ("jitanglailo" == $_GET['ahahahaha'] & [RLO][LRI]+!![PDI][LRI]& " [RLO][LRI]Flag![PDI][LRI]N1SACTF" == $_GET['[RLO][LRI]Ugeiwo[PDI][LRI]cuishiyuan'])这下就很清晰了,第三个条件为
"[RLO][LRI]Flag![PDI][LRI]N1SACTF" == $_GET['[RLO][LRI]Ugeiwo[PDI][LRI]cuishiyuan']至于PHP 是如何解析中间这坨 & [RLO][LRI]+!![PDI][LRI]& 的?
-
因为 error_reporting(0),PHP 会把 [RLO][LRI] 和 [PDI][LRI] 当作未定义的常量,并降级为字符串。
-
+!![PDI][LRI]:!! 是双重取反,任何非空字符串取反两次都是 true(即 1)。[RLO][LRI] 字符串转数字是 0。所以 0 + 1 = 1。
-
整个表达式变成了 & 1 &。
-
在 PHP 中,&(按位与)的优先级低于 ==。所以实际上变成了:(A == 1) & 1 & (B == 1)。这等价于 A && B。
构造 Payload
既然逻辑还原了,我们要满足两个条件:
- ahahahaha = jitanglailo
- 参数名必须包含特殊字符:[RLO][LRI]Ugeiwo[PDI][LRI]cuishiyua
- 参数值必须包含特殊字符:“[RLO][LRI]Flag![PDI][LRI]N1SACTF”
所以在发送请求时,你需要将这些特殊字符进行 URL 编码(U+202E -> %E2%80%AE,U+2066 -> %E2%81%A6,U+2069 -> %E2%81%A9)。
?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6%20Flag%21%E2%81%A9%E2%81%A6N1SACTF
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
[NISACTF 2022]checkin Unicode 双向控制字符(Bidi)混淆
https://tuulei.cn/posts/nisactf-2022-checkin-unicode-shuang-xiang-kong-zhi-zi-fu-bid/相关文章智能推荐
1
[UUCTF 2022 新生赛]funmd5 0e 碰撞与时间戳预测
打靶场preg_replace 的正则 `/^(.*)0e(.*)$/` 中,. 默认不匹配换行符 \n。如果字符串中包含换行符,且 0e 位于换行符之后,则整个正则无法......
2
[WUSTCTF 2020]
打靶场2026-09-30
3
[SWPUCTF 2025 秋季新生赛]FIRST MEETING PHP 反序列化 POP 链
打靶场分析这段完整源码,需要构造一条非常经典的 POP 链(属性导向编程利用链)。
4
[HNCTF 2022 WEEK4]unf1ni3hed_web3he1 LFI + Session反序列化 + 条件竞争
打靶场2026-09-26
5
[watevrCTF 2019]Voting Machine
打靶场一个适合入门的pwn题
随机文章随机推荐














