您是否曾经发现过一些危险的行为,但无法完全证明它是可利用的? 我们的XSS备忘单几乎包含我们所知道的每种利用技术,但是如果找不到适合您情况的技术,该怎么办?我们只是忘记提及正确的技术,还是实际上无法利用?
在PortSwigger,我们认为任何事情都是可以入侵的,因此当我们遇到无法解决的问题时,我们就不喜欢它。 我们经常投入大量时间来尝试应对这些挑战,并且我们知道你们中的许多人都这样做。这就是为什么我们决定在XSS速查表上创建一个“不可能的实验室”部分的原因,它具有两个主要优点:
1) 如果您面临挑战,则可以尝试解决这些实验室并赢得永恒的名声。
2) 如果您发现与我们其中一个不可能的实验室相匹配且无法利用的场景,那么您可以有合理的信心,其他任何人都不知道如何利用它。
这个部分会随着时间的推移而增长,但目前我们有8个实验室。 每个实验室都定义了一个小问题,我们的研究团队尝试解决了这个小问题,但一直无法发出警报,这使我们只能进行无脚本攻击,例如悬挂标记注入,这些攻击通常功能较弱。 您能解决不可能的事情并解决这些实验室吗?
规则:
- 向量只能在现代浏览器中使用-不能使用Internet Explorer! 或Old Edge
- 警报功能必须被调用
基本HTML上下文,但WAF阻止<[a-zA-Z]
当您不能使用后跟一个字母数字字符的开放标记时,本练习将捕获该场景。 有时,您可以通过完全绕过WAF来解决此问题,但是当那不是一种选择时呢? .NET的某些版本具有此行为,并且仅在具有<%标签的旧IE中可以利用。
查看实验室
基于脚本的注入,但转义引号、正斜杠和反斜杠
我们经常遇到这种情况:您在JavaScript变量中进行了注入,可以注入尖括号,但是引号和正/反斜杠被转义了,因此您不能简单地关闭脚本块。
解决这个问题最接近的方法是,当您有多个注入点时,第一个在基于脚本的上下文中,第二个在HTML中。
查看实验室
innerHTML上下文,但不允许等号
您有一个处理查询字符串的站点,URL对该参数进行解码,但在等号上分割然后分配给innerHTML。 在这种情况下,-->