zoukankan      html  css  js  c++  java
  • 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。但是这种情况在真实环境里出现的几率比较小。

      几乎没有了,不做这个。

  • 相关阅读:
    模板jinja2常用方法
    简单实用的日志类CLog (Python版)
    Databus架构分析与初步实践
    AWS API 2.0签名规范
    django学习——通过get_FOO_display 查找模型中的choice值
    Twitter如何在数千台服务器上快速部署代码?
    mysql 添加索引 mysql 如何创建索引
    sql中的like和正则的区别
    python2.7运行出现的Warning: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode
    Python命令模块argparse学习笔记(四)
  • 原文地址:https://www.cnblogs.com/kbhome/p/12822266.html
Copyright © 2011-2022 走看看