• xss-tour闯关


    xss-tour闯关

    level 1

    第一关都很简单,没有任何过滤。直接在url中输入。因为你可以查看页面源代码,他是get请求。

    level 2

    第二关有一个输入框,尝试写入东西并了解写的东西在前端被放置的地方,查看页面源代码。发现输入的内容会被h2标签包裹,但是他将<>给转义了。但是还有一个input标签值也传递了我输入的内容,所以可以从input下手进行第二次尝试

    我们先闭合input标签,构建语句

    "><script>alert('22')</script>
    

    level 3

    两个输入位置的<>都被转义了,我们可以使用事件弹窗。但是事件是属性中的,我们在input中改变。

    闭合value的单引号。

    1' onclick='alert(1)
    

    按道理这样是可以的,但是没有成功

    1' onclick=alert(1)//
    

    这样才成功,我也不知道为什么

    level 4

    value直接去除<>,还是继续用事件,闭合value的引号。

    1“ onclick="alert('1')
    

    level 5

    过滤掉了script标签和所有on开头的事件,我们可以尝试使用伪协议a标签,注意同样闭合input和value

    "><a href="javascript:alert('22')
    

    level 6

    过滤了script、on事件、href,用str_replace函数guolv,但是又没有过滤大小写了。所以用大小写绕过。

    "><SCRIPT>alert('22')</SCRIPT>
    "><a HREF="javascript:alert('22')
    

    都可以

    level 7

    他是替换了script、on事件、href为空,那么遇到替换就能想到双写。

    "><sscriptcript>alert('22')</sscriptcript>
    

    level 8

    可以看到我添加的内容,被插入在了以下两个位置

    两处都转义了script、on事件,并且大写小都被过滤。“也被转义

    尝试使用HTML实体编码

    尝试使用其他的编码的形式
    对script中的一个字母进行html实体编码

    HTML实体编码(HEX)
    javascri&#x70;t:alert()
    
    HTML实体编码(DEC)
    javascri&#112;t:alert()
    

    成功

    补充:
    HTML 实体

    在 HTML 中,某些字符是预留的。
    在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。
    如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。
    字符实体类似这样:

    &entity_name;
    
    或者
    
    &#entity_number;
    

    level 9

    还是老套路,输入然后看代码查找漏洞

    对这两出不断尝试发现,script被过滤掉了。并且传入的连接处有验证,必须带有有http://

    javascri&#112;t:alert()//http://
    

    level 10

    注入点在地址栏的?name=中,看源代码,这里涉及到一个form隐藏表单的知识点。对于html和js底子不好的我来说,是有些摸不着头脑的,后来查了一下别人写的文章结合自己的一些理解去尝试做这个题目。

    首先概念理解,form表单的类型是隐藏的话,他是不会提交的,所以我们从type=hidden下手。

    keyword=111&t_link=1&t_history=2&t_sort=1" onfocus=alert(1) type="text"
    

    发现t_sort是可以直接注入的,这是别人贴的poc,先看看

    1. keyword:当form表单提交数据时,keyword会替换掉之前原有的参数

    2. onfocus:获得焦点触发事件

    3. 给t_link、t_history和t_sort赋值,并将t_sort的类型改为text文本,这样t_sort就可以提交了。就是这么简单。

    level 11

    查看源代码,和上一题是一个道理,只不过他新增了一个输入t_ref,自己修改了提交数据参数值keyword,所以我们直接改他的值就好了

    1. 抓包

    1. 特这里的referer值就是最后一列的keyword值,我们修改一下

    " type="text" onclick="alert(1)
    

    level 12

    和上一关同理

    1. 抓包,发现Agent的值为t_ua的值

    2. 修改值

    level 13

    和之前同理,还是先寻找注入点

    1. 抓包,发现在cookie值中有t_cook信息

    2. 修改

      " type="text" onclick="alert(1);
      

      level 14

      Exif是啥???

        可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

      将XSS写到Exif里(PowerExif)exif是PHP拓展,如果要用exif_read_data函数要记得开启拓展。

      如下DEMO:

      `$exif` `= exif_read_data(``'test.jpg'``);``var_dump(``$exif``);
      

      在读取的时候就会导致XSS。但是这种情况在真实环境里出现的几率比较小。

      几乎没有了,不做这个。

  • 相关阅读:
    Experice Cloud
    实验一密码引擎商用密码算法实现2交叉测试(选做)
    初识Disruptor
    gRPC实战Demo
    关于Java新版本
    get和post请求区别
    Java 年轻代和老年代
    禁用ListView中的CheckBoxes
    js 将路径反斜杠转换成双反斜杠
    Sql Server如何解决跨数据库的权限问题
  • 原文地址:https://www.cnblogs.com/kbhome/p/12822266.html
Copyright © 2020-2023  润新知