DVWA靶场实战(十一)
十一、XSS(Reflected):
1.漏洞原理:
XSS被称为跨站脚本攻击(Cross Site Script),而Reflected被称作反射型XSS。不同于DOM和Stored,Reflected反射型无法存储。防御措施以及利用手法同DOM大同小异。
2.实战:
(1)Low:
代码分析:
<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Feedback for end user $html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; } ?>
基本上也是不设防状态,所以我们可以直接尝试攻击。
这里我们用弹窗进行测试,利用语句“<script>alert(1)</script>”,得到以下情况,说明攻击成功。
(2)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 $html .= "<pre>Hello ${name}</pre>"; } ?>
这里我们看到会将<script>替换为空格,所以我们可以使用双写注入或者大小写绕过。
这里我们利用语句“<sc<script>ript>alert(1)</script>”(双写注入),或者“<sCript>alert(1)</ScRipt>”(大小写注入)。可以看见如下就是成功了。
(3)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 $html .= "<pre>Hello ${name}</pre>"; } ?>
这里已经不区分大小写的屏蔽“script”了,所以我们这里采用img标签注入。
我们开始攻击,利用“<img src=# one rror=alert("xss")>”语句进行攻击,发现成功。
(4)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 $html .= "<pre>Hello ${name}</pre>"; } // Generate Anti-CSRF token generateSessionToken(); ?>
作为防御模板,将输入的代码转为HTML实体。
#文章来源:wybsignal
标签:XSS,name,代码,Reflected,DVWA,Hello From: https://www.cnblogs.com/wybsignal/p/17070866.html