标签:str reflect for token error end ted src load
XSS(Cross Site Scripting)即跨站脚本攻击,是指由于过滤不当导致恶意代码注入网页,当受害者访问网页时,浏览器执行恶意代码,执行攻击者的攻击行为
服务器核心代码
<?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>
成功弹窗
服务器核心代码
<?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>
成功弹窗
服务器核心代码
<?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)>
成功弹窗
服务器核心代码
<?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漏洞了
标签:str reflect for token error end ted src load
原文地址:https://www.cnblogs.com/N0ri/p/13396476.html