xss挑战1-20关全通Writeup

XSS挑战

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

level 1 最基本的xss

看源码
xss挑战1-20关全通Writeup_第1张图片payload
在这里插入图片描述xss
xss挑战1-20关全通Writeup_第2张图片

level 2 转换为字符串

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

在输入框中点一下,xss生效
xss挑战1-20关全通Writeup_第5张图片

level 3 使用htmlspecialchars函数

尝试payload

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

xss挑战1-20关全通Writeup_第10张图片在这里插入图片描述xss挑战1-20关全通Writeup_第11张图片xss挑战1-20关全通Writeup_第12张图片

level 4 使用htmlspecialchars函数

跟上一关差不多
xss挑战1-20关全通Writeup_第13张图片xss挑战1-20关全通Writeup_第14张图片

level 5 当onclick被替换时

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

" >xss<"

点击链接
xss挑战1-20关全通Writeup_第15张图片成功进行xss
xss挑战1-20关全通Writeup_第16张图片

level 6 href被替换了

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

"><"

xss挑战1-20关全通Writeup_第17张图片

level 7 双写饶过

使用上一关的payload,这是啥情况,看源码
xss挑战1-20关全通Writeup_第18张图片
可以看到,它将字母全部转小写然后替换成空了
xss挑战1-20关全通Writeup_第19张图片可以通过双写绕过

" >alert()<"

xss挑战1-20关全通Writeup_第20张图片

level 8 实体编码

尝试payload
xss挑战1-20关全通Writeup_第21张图片
可以看到href=“111”
xss挑战1-20关全通Writeup_第22张图片再试payload
在这里插入图片描述
字符串被替换了
在这里插入图片描述
换大写,还是不行
在这里插入图片描述
xss挑战1-20关全通Writeup_第23张图片双写也不行
xss挑战1-20关全通Writeup_第24张图片

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

点击链接成功xss
xss挑战1-20关全通Writeup_第25张图片

level 9 检测链接

会检测链接是否合法
xss挑战1-20关全通Writeup_第26张图片

javascript:alert()//http://

xss挑战1-20关全通Writeup_第27张图片也可以把链接放在alert内部

javascript:alert('http://')

level 10 隐藏按钮

通过url参数t_sort传递payload
xss挑战1-20关全通Writeup_第28张图片默认按钮是隐藏的,无法触发XSS,所以要先显示按钮
在这里插入图片描述xss挑战1-20关全通Writeup_第29张图片

level 11 Referer注入

没有可见的输入点
xss挑战1-20关全通Writeup_第30张图片看源码,可以通过Referer传递payload

xss挑战1-20关全通Writeup_第31张图片payload如下
xss挑战1-20关全通Writeup_第32张图片xss挑战1-20关全通Writeup_第33张图片

level 12 User Agent注入

可以通过ua进行payload
xss挑战1-20关全通Writeup_第34张图片payload如下
xss挑战1-20关全通Writeup_第35张图片xss挑战1-20关全通Writeup_第36张图片

level 13 cookie注入

可能可以通过cookie进行注入
xss挑战1-20关全通Writeup_第37张图片看源码得知要加上user
xss挑战1-20关全通Writeup_第38张图片payload
xss挑战1-20关全通Writeup_第39张图片xss挑战1-20关全通Writeup_第40张图片

level 14 罕见的exif xss

网页内嵌了一个exifviewer网页
xss挑战1-20关全通Writeup_第41张图片将制作好的xss图片通过exifviewer上传,exifviewer在解析这个漏洞的时候会触发xss
所以需要先制作xss图片
查看图片详情

exiftool brute.jpeg

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

$ exiftool -Artist=’ “>’ brute.jpeg

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

level 15 ng-include

f12看一下,看到个奇怪的 xss挑战1-20关全通Writeup_第42张图片
angular js的ng-include相当于php的include函数
payload
在这里插入图片描述在这里插入图片描述xss挑战1-20关全通Writeup_第43张图片

level 16 %a0

keyword的值是center的内容
在这里插入图片描述
xss挑战1-20关全通Writeup_第44张图片payload,空格被过滤,使用%0D(url encode回车)替代
xss挑战1-20关全通Writeup_第45张图片

level 17 `1`

地址栏有两个参数
在这里插入图片描述f12看一下
xss挑战1-20关全通Writeup_第46张图片arg02可以进行注入
payload
在这里插入图片描述在这里插入图片描述xss挑战1-20关全通Writeup_第47张图片

level 18 跟17关相同

xss挑战1-20关全通Writeup_第48张图片

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
xss挑战1-20关全通Writeup_第49张图片xss挑战1-20关全通Writeup_第50张图片xss挑战1-20关全通Writeup_第51张图片前提要打开flash
xss挑战1-20关全通Writeup_第52张图片

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
xss挑战1-20关全通Writeup_第53张图片

payload

xss挑战1-20关全通Writeup_第54张图片在这里插入图片描述xss挑战1-20关全通Writeup_第55张图片

你可能感兴趣的:(Web漏洞挖掘)