
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
题目3 绕过JavaScript限制
题目概况
本节分析一道简单的XSS题目,使用JavaScript处理输入的字符串来过滤关键字。这是一道在线题目,见链接1-1。读者可以先试着解答这道题目,如果无法完成,再来看下面的解题思路分析。
解题思路
访问题目页面,如图1-24所示。

图1-24
题目说明告诉我们,这是一道XSS题目,所以,可以直接输入命令进行尝试,如图1-25所示。

图1-25
题目不允许我们填写这种格式的命令。这看起来像是前端的JavaScript验证。打开Chrome的调试器,如图1-26所示。在这里,用maxsize限制长度为10,用pattern限制内容只能是大小写字母。由于js脚本的内容可以随意修改,所以将其内容修改如下。


图1-26
这样,输入就完全不受限制了。再尝试一下,发现并没有弹出我们想要的结果“1”。继续进行调试,如图1-27所示。

图1-27
由于“<”和“>”分别被替换成“<”和“>”,所以无法弹出。页面中嵌了一个ex1.js脚本,具体如下。


注意以下内容。

这段代码用replace()函数将输入的数据中的“<”“>”分别替换成“<”“>”,因此,我们只要把这段修改为以下内容即可。

执行之前输入的命令,如图1-28所示,成功弹出“1”。仔细看一下题目要求,弹出的是“Ex1”,因此将弹出内容改为“Ex1”,答题成功。
小结
本题主要考察如何使用JavaScript在前端进行数据处理。只要去掉JavaScript的限制,就可以解题了。

图1-28