[技巧收藏]javascript大小写转换的特性

本文探讨JavaScript中toUpperCase()和toLowerCase()函数在处理特定Unicode字符时的行为。例如,ı.toUpperCase()转换为'I',而非'i'。文章还列举了一些特殊字符及其ASCII码,并提供了进一步研究的参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里做个记录

这种特性可以用于绕过XSS等(可能一些CTF中会遇到这种奇葩)

JavaScript的toUpperCase()和toLowerCase()2个函数在转换时,会出现一些特殊字符也会转成字母的(大小写)

比如:"ı".toUpperCase() == 'I'  这里不是"i"

为了看清楚 如下图:

我们可以清除的看到 这个i的ascii码是105  而另一个是305

FUZZ就不必了 大神已经搞完了 这里只是记录

toUpperCase()转大写时有下面2个字符
"ı".toUpperCase() == 'I'    ascii码:305

"ſ".toUpperCase() == 'S'    ascii码:383
toLowerCase()转小写也有2个字符"".toLowerCase() == 'k'
"".charCodeAt() = 8490 这是个闪光的K
而真正的K是75的ascii
0130 String.fromCharCode(0130).toLowerCase() == 'x' 返回为真 可以测试

在原文的评论中有大牛提到

toLowerCase()还有个U+0130(这个已经添加到前面了)

 

参考:

http://zone.wooyun.org/content/15388

 

转载于:https://www.cnblogs.com/k1ra8/articles/4013278.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值