新手DVWA-XSS (Reflected)
Posted n0ri
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手DVWA-XSS (Reflected)相关的知识,希望对你有一定的参考价值。
XSS (Reflected)
XSS(Cross Site Scripting)即跨站脚本攻击,是指由于过滤不当导致恶意代码注入网页,当受害者访问网页时,浏览器执行恶意代码,执行攻击者的攻击行为
low
服务器核心代码
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
// Feedback for end user
echo ‘<pre>Hello ‘ . $_GET[ ‘name‘ ] . ‘</pre>‘;
}
?>
从代码上看,没有任何过滤
解法
输入<script>alert(1)</script>
成功弹窗
medium
服务器核心代码
<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
// Get input
$name = str_replace( ‘<script>‘, ‘‘, $_GET[ ‘name‘ ] );
// Feedback for end user
echo "<pre>Hello ${name}</pre>";
}
?>
medium难度代码过滤了script标签
解法
双写绕过<scri<script>pt>alert(1)</script>
成功弹窗
high
服务器核心代码
<?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>";
}
?>
正则匹配彻底过滤掉了script标签,改用其他标签
解法
输入<img src=123 onerror=alert(1)>
成功弹窗
impossible
服务器核心代码
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ ‘user_token‘ ], $_SESSION[ ‘session_token‘ ], ‘index.php‘ );
// Get input
$name = htmlspecialchars( $_GET[ ‘name‘ ] );
// Feedback for end user
echo "<pre>Hello ${name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>
代码使用了htmlspecialchars()函数,将‘<‘,‘>‘转换为html实体,所以已经不存在XSS漏洞了
以上是关于新手DVWA-XSS (Reflected)的主要内容,如果未能解决你的问题,请参考以下文章