我正在测试在 Microsoft-IIS/7.5 Web 服务器上运行的 ASP.NET 应用程序,并向其发送以下 GET 请求参数:
&search=aaa%20%*+,-/;<=>^|"'bbb
其中一个参数是搜索,我在其中输入了上面可以看到的值。该值在返回的响应中打印两次,如下所示:
第一个参数:
<input name="nn" type="text" value="aaa %* ,-/;<=>^|"'bbb" class="cc" />
第一项中引用的参数如下:
- " ==>
"
- ' ==>
'
- <==>
<
我想没有办法突破那里,因为值被转义了,我们不能正确输入 " 字符。然而,所有参数都没有正确转义,即使不可能突破。
第二个参数:
<strong>aaa %* ,-/;<=>^|"'bbb</strong>
我们可以看到所有角色都按原样呈现,但有一个问题。在 < 字符之后不能有任何 [a-zA-Z0-9] (可能还有其他一些)字符,因为我们可能会被 ASP.NET 过滤器阻止。
如果我们输入以下内容:
&searchQuery=aaa<#script>alert('Hi');<#/script>bbb
我们得到以下输出:
<strong>aaa<#script>alert('Hi');<#/script>bbb</strong>
我问你是否有任何方法可以打破限制并执行任意 JavaScript 代码?
谢谢你