xss挑战1-20关全通Writeup

XSS挑战

在线:https://xss.tesla-space.com/
源码:https://github.com/rebo-rn/xss-lab

level 1 最基本的xss

看源码
在这里插入图片描述payload
在这里插入图片描述xss
在这里插入图片描述

level 2 转换为字符串

正常注入,注入失败
在这里插入图片描述看下前端代码,可以看到payload被作为一个字符串整体输入了,我们只需要将value的第一个双引号闭合起来,然后再插入一个事件,最后再闭合value的第二个双引号即可
在这里插入图片描述payload
在这里插入图片描述

在输入框中点一下,xss生效
在这里插入图片描述

level 3 使用htmlspecialchars函数

尝试payload

在这里插入图片描述看下源码,可以看到使用了htmlspecialchars函数,它的作用是把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体,所以不能使用尖括号
在这里插入图片描述尝试payload
在这里插入图片描述可以看到此时alert()多了一个’,所以payload还需要修改
在这里插入图片描述最终payload
在这里插入图片描述
在这里插入图片描述补充:htmlspecialchars绕过

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

level 4 使用htmlspecialchars函数

跟上一关差不多
在这里插入图片描述在这里插入图片描述

level 5 当onclick被替换时

使用level 4 的payload发现onclick变成了o_nclick
在这里插入图片描述看下源码,发现是替换了字符串
在这里插入图片描述使用payload

" ><a href=javascript:alert()>xss</a><"

点击链接
在这里插入图片描述成功进行xss
在这里插入图片描述

level 6 href被替换了

上关的href被替换了,可以使用大写

"><SCRIPT>alert()</SCRIPT><"

在这里插入图片描述

level 7 双写饶过

使用上一关的payload,这是啥情况,看源码
在这里插入图片描述
可以看到,它将字母全部转小写然后替换成空了
在这里插入图片描述可以通过双写绕过

" ><scrscriptipt>alert()</scrscriptipt><"

在这里插入图片描述

level 8 实体编码

尝试payload
在这里插入图片描述
可以看到href=“111”
在这里插入图片描述再试payload
在这里插入图片描述
字符串被替换了
在这里插入图片描述
换大写,还是不行
在这里插入图片描述
在这里插入图片描述双写也不行
在这里插入图片描述

使用实体编码,服务器可能没有过滤,浏览器会自动解析
&#116就字母t的实体编码
在这里插入图片描述
可以看到没有替换
在这里插入图片描述

点击链接成功xss
在这里插入图片描述

level 9 检测链接

会检测链接是否合法
在这里插入图片描述

javascrip&#116:alert()//http://

在这里插入图片描述也可以把链接放在alert内部

javascrip&#116:alert('http://')

level 10 隐藏按钮

通过url参数t_sort传递payload
在这里插入图片描述默认按钮是隐藏的,无法触发XSS,所以要先显示按钮
在这里插入图片描述在这里插入图片描述

level 11 Referer注入

没有可见的输入点
在这里插入图片描述看源码,可以通过Referer传递payload

在这里插入图片描述payload如下
在这里插入图片描述在这里插入图片描述

level 12 User Agent注入

可以通过ua进行payload
在这里插入图片描述payload如下
在这里插入图片描述在这里插入图片描述

level 13 cookie注入

可能可以通过cookie进行注入
在这里插入图片描述看源码得知要加上user
在这里插入图片描述payload
在这里插入图片描述在这里插入图片描述

level 14 罕见的exif xss

网页内嵌了一个exifviewer网页
在这里插入图片描述将制作好的xss图片通过exifviewer上传,exifviewer在解析这个漏洞的时候会触发xss
所以需要先制作xss图片
查看图片详情

exiftool brute.jpeg

将xss写入图片某个属性,这样xss图片就做好了

$ exiftool -Artist=’ “><img src=1 onerror=alert(document.domain)>’ brute.jpeg

但是由于exifviewer现在好像不支持上传了,这个漏洞是以前该网站存在的一个漏洞,现在也已经无法复现了

level 15 ng-include

f12看一下,看到个奇怪的<!–ngInclude:1.gif
在这里插入图片描述
angular js的ng-include相当于php的include函数
payload
在这里插入图片描述在这里插入图片描述在这里插入图片描述

level 16 %a0

keyword的值是center的内容
在这里插入图片描述
在这里插入图片描述payload,空格被过滤,使用%0D(url encode回车)替代
在这里插入图片描述

level 17 `1`

地址栏有两个参数
在这里插入图片描述f12看一下
在这里插入图片描述arg02可以进行注入
payload
在这里插入图片描述在这里插入图片描述在这里插入图片描述

level 18 跟17关相同

在这里插入图片描述

level 19 flash xss

本关进行之前需要了解flash xss:
Flash XSS攻击总结 杀死那个石家庄人/ 菲哥哥:https://www.secpulse.com/archives/44299.html

这一类的xss比较少见,更多技术细节参见:
那些年我们一起学xss:https://wizardforcel.gitbooks.io/xss-naxienian/content/14.html

payload flash xss
在这里插入图片描述在这里插入图片描述在这里插入图片描述前提要打开flash
在这里插入图片描述

level 20 flash xss

这一题用到了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

在这里插入图片描述在这里插入图片描述在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章