DVWA之XSS跨站脚本攻击(存储型)
原理框图
弹窗
重定向
获取cookie
低等级
1.弹窗
插入xss代码:
返回xss页面:
其他人访问该页面,并触发xss:
2.重定向
插入恶意代码:
返回xss页面,触发重定向:
其他人访问该页面,并触发xss:
3.获取cookie
插入xss代码:
使用 kali linux 进行监听:
其他人访问该页面,并触发xss:
获得cookie:
中等级
查看网页源代码:
<?php
if( isset( $_POST[ 'btnSign' ] ) ) {
// Get input
$message = trim( $_POST[ 'mtxMessage' ] );
$name = trim( $_POST[ 'txtName' ] );
// Sanitize message input
$message = strip_tags( addslashes( $message ) );
$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
$message = htmlspecialchars( $message );
// Sanitize name input
$name = str_replace( '<script>', '', $name );
$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
// Update database
$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
//mysql_close();
}
?>
发现message将html标签实体化,name过滤了 < script >标签。
1.弹窗
换个标签,复写,大小写混合绕过。
2.重定向
js代码:
<scRipT>window.location = "http://www.4399.com"</script>
插入代码:
其他人访问该页面:
3.获取cookie
与低等级类似,注意过滤绕过。
高等级
查看源码:
message html标签实体化,name 正则过滤了 < script >;无法使用此标签。
使用:
<body onload = alert('xss')>
<img src = '' onerror = alert('xss')>
<a href = '' onclick = alert('xss')>点我领红包</a>
这里使用第三条。
xss页面:
其他人访问并“领红包”:
DVWA之XSS跨站脚本攻击(DOM型).