在线:https://xss.tesla-space.com/
源码:https://github.com/rebo-rn/xss-lab
正常注入,注入失败
看下前端代码,可以看到payload被作为一个字符串整体输入了,我们只需要将value的第一个双引号闭合起来,然后再插入一个事件,最后再闭合value的第二个双引号即可
payload
尝试payload
看下源码,可以看到使用了htmlspecialchars函数,它的作用是把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体,所以不能使用尖括号
尝试payload
可以看到此时alert()多了一个’,所以payload还需要修改
最终payload
补充:htmlspecialchars绕过
使用level 4 的payload发现onclick变成了o_nclick
看下源码,发现是替换了字符串
使用payload
" >xss<"
上关的href被替换了,可以使用大写
"><"
使用上一关的payload,这是啥情况,看源码
可以看到,它将字母全部转小写然后替换成空了
可以通过双写绕过
" >alert() <"
尝试payload
可以看到href=“111”
再试payload
字符串被替换了
换大写,还是不行
双写也不行
使用实体编码,服务器可能没有过滤,浏览器会自动解析
t就字母t的实体编码
可以看到没有替换
javascript:alert()//http://
javascript:alert('http://')
通过url参数t_sort传递payload
默认按钮是隐藏的,无法触发XSS,所以要先显示按钮
没有可见的输入点
看源码,可以通过Referer传递payload
可能可以通过cookie进行注入
看源码得知要加上user
payload
网页内嵌了一个exifviewer网页
将制作好的xss图片通过exifviewer上传,exifviewer在解析这个漏洞的时候会触发xss
所以需要先制作xss图片
查看图片详情
exiftool brute.jpeg
将xss写入图片某个属性,这样xss图片就做好了
$ exiftool -Artist=’ “>’ brute.jpeg
但是由于exifviewer现在好像不支持上传了,这个漏洞是以前该网站存在的一个漏洞,现在也已经无法复现了
f12看一下,看到个奇怪的
angular js的ng-include相当于php的include函数
payload
keyword的值是center的内容
payload,空格被过滤,使用%0D(url encode回车)替代
地址栏有两个参数
f12看一下
arg02可以进行注入
payload
本关进行之前需要了解flash xss:
Flash XSS攻击总结 杀死那个石家庄人/ 菲哥哥:https://www.secpulse.com/archives/44299.html
这一类的xss比较少见,更多技术细节参见:
那些年我们一起学xss:https://wizardforcel.gitbooks.io/xss-naxienian/content/14.html
这一题用到了zeroclipboard xss,具体可以参考这篇文章:
https://www.freebuf.com/sectool/108568.html
国内广泛使用了zeroclipboard.swf,主要的功能是复制内容到剪切板,中间由flash进行中转保证兼容主流浏览器,具体做法就是使这个透明的flash漂浮在复制按钮之上
看一下源码:
使用jpexs反编译(swf反编译工具:https://github.com/jindrapetrik/jpexs-decompiler
)
原因显而易见,Externalinterface.call第二个参数传回来的id没有正确过滤导致xss
payload