🕵️ 如何绕过 BKY 对 script 的屏蔽
Conmajia
January 20, 2019
⚠️ 由于安全设置本文互动功能已禁用 ,
原文
document.title = "[我是 JS 生成的!] " + document.title
标题其实是有点问题的
只是总有人不小心搞出一些事来<script>
标签

所以现在你如果在文章里写上 JS
前面的正文
<script type="text/javascript">
document.title = Math.random()
</script>
后面的正文
然后把文章发表出来
那怎么办啊
默认主题也挺好的啊还有那么多五颜六色的可以选呢 , 。
您是认真的吗

如果某天你意识到了这一点
你知道我在说什么毕竟你那么聪明 , 。
都已经开放 HTML 了
Math.random()
吧啦吧啦半天
$('#random-tag').text(Math.random());
或者用较小的篇幅展示更多内容
走进地铁的一瞬间
所以现在我来说说怎么运行文章正文里的 JS 代码eval
函数专门 evaluate 字符串形式的代码管理→设置
自定义 HTML 的地方


非常幸运eval
函数可以执行<script>
屏蔽了<run>
包住要执行的代码eval
<!-- 页面底部 HTML -->
<script>
$(function(){
$('run').each(function(){eval($(this).text())});
});
</script>
这样<run>
标签内的代码了<run>
都隐藏起来
/* CSS 设置 */
run {
display: none;
}
一开始那个例子改改
前面的正文
<run>
document.title = Math.random()
</run>
后面的正文
发表文章就能看到效果了

这不就绕过屏蔽了eval
$
*
_
这些特殊符号识别成格式开关
<run>
$('html').attr('lang', 'zh-CN');
$('title').text(Math.random() * 100 * 99);
</run>
只有两句话的代码
<run><br>
<span class="MathJax_Preview" style="color: inherit; display: none;"></span>
<span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position: relative;" data-mathml="
<math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mo stretchy="false">(</mo>
<mo>&#x2032;</mo></msup><mi>h</mi><mi>t</mi><mi>m</mi><msup><mi>l</mi><mo>&#x2032;</mo>
</msup><mo stretchy="false">)</mo><mo>.</mo><mi>a</mi><mi>t</mi><mi>t</mi><mi>r</mi><msup>
<mo stretchy="false">(</mo><mo>&#x2032;</mo></msup><mi>l</mi><mi>a</mi><mi>n</mi><msup>
<mi>g</mi><mo>&#x2032;</mo></msup><msup><mo>,</mo><mo>&#x2032;</mo></msup><mi>z</mi>
<mi>h</mi><mo>&#x2212;</mo><mi>C</mi><msup><mi>N</mi><mo>&#x2032;</mo></msup>
<mo stretchy="false">)</mo><mo>;</mo></math>" role="presentation">
<!-- (省略几十行) -->
<script type="math/tex" id="MathJax-Element-2">('html').attr('lang', 'zh-CN');
</script>('title').text(Math.random() * 100 * 99);<br>
</run>
大部分是 MathJax 的数学公式解析$
作为行间公式的识别符$
jQuery
$
<run>
的某个属性里eval
改成从属性中读取
<run code="$('html').attr('lang', 'zh-CN');$('title').text(Math.random() * 100 * 99);"></run>
</code>
</pre>
<pre class="prettyprint lang-js linenums" lang="javascript">
$('run').each(function(){eval($(this).attr('code'))});
需要说明的是
我说明个几把
The End.
if(jQuery('#no-reward').text() == 'true') jQuery('.bottom-reward').addClass('hidden');
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?