目录
愉快的旅程即将开始!!!快上车!!!
来和我一起打怪升级吧。哈哈哈哈哈!!!
壹
发现页面没有输入框,但发现可以更改url
它已经告诉我们这一关 It's easy,那我们就用最简单的代码试一下
<script>alert(/vegetable/)</script>
那么这一关就通过了,果然是 easy 的
贰
先用刚才的代码试一试,发现不行
看一下网页源码,发现是 < 和 " 没有闭合,那么怎么办呢?
答案也很简单,闭合就好了
"><script>alert(/vegetable/)</script>
然后第二关也就这么通过了,是不是很简单
叁
还是先用最开始的语句试一试,发现果然一关比一关难,还是不行
再看一下网页源码,发现对尖括号进行了过滤," 被转义成 '
这个时候也不要慌,我们换一种语句试试,单引号是为了闭合
'οnclick='alert(/vegetable/)
虽然报错了,但onclick需要用户点击才能执行,点击一下搜索框,就发现通关了
肆
鉴于越往后难度越高,过滤的信息也越多,我们先输入一个包含很多绕过方式的语句,叫它万能语句好了
<SCR<script>IPT>'"()Oonnjavascript
然后我们查看源码,根据源码的过滤信息使用语句,发现 < 被过滤
那我们尝试使用,双引号是为了闭合
"οnclick="alert(/vegetable/)
与之前的相同,还是需要鼠标点击才能触发
伍
万能语句走一波~~~
查看源码找过滤,可以看到大写字母都被转化成小写,r 和 i 之间,o 和 n 之间增加了 _
现在我们尝试一下伪协议语句,在考虑闭合问题加上相关符号
"><a href="javascript:alert(/test/)">touch me!</a>
点击touch me即可过关!
陆
同样的,先上万能语句
在同样的,查看源码找过滤信息
r 和 i 之间,o 和 n 之间增加了 _,但并未进行大小写转义,将O写成大写试一下
"Onclick="alert(/vegetable/)
ok,下一关!
柒
有些话说太多也就没意思了,先干什么你们可能也清楚了
查看源码发现
所以,我们试一下双写script,同时,不要忘了进行闭合
"><scrscriptipt>alert(/vegetable/)</scrscriptipt>
捌
先输入万能语句<SCR<script>IPT>'"()Oonnjavascript
对比语句,查看源码发现, " 被转义,r 和 i o 和 n 之间加了 _ ,还存在大小写转义
尝试伪协议,因为填入的值就在href中,所以我们就直接填其中的内容,javascript:alert(/test/)
然后对其中的 r 字符进行ASCII编码,javascRipt:alert(/test/)
然后就发现很愉快的通关了
玖
查看源码后,发现连接不合法,那么合法连接是什么呢?
我们尝试将http://写到万能语句后面,即<scr<script>ipt>'"()oonnjavascripthttp://
此时连接合法了,我们再看它的过滤,和上一关差不多
我们采用上一关的语句,并把http://写入其中
javascRipt:alert('http://')
壹拾
来到第十关,打眼一看,和第一关还有点相似,我们先尝试一下万能语句
我们发现不太行,但是发现下面还有三个参数,t_link,t_history,t_sort
尝试这三个参数能否传递变量,然后我们发现t_sort很好看
尖括号被过滤,我们试一下"οnclick="alert(/vegetable/)
可以看到,语句是有了,但是没有输入框让我们点击,我们没法触发事件,也可以看到后面跟着的type类型是hidden
那就试着想一想更改一下type,别问为什么写在onclick前面,自己试一试就明白了
然后点击一下这个小按钮就可以通关了
壹拾壹
看上去好像和上一关是一样的?
直接看源码,看看是什么样子,多了一个t_ref,剩下的好像和上一关一样
按之前的方法试验一下,可以看到还是t_sort能够传参,那把刚才的语句在试一遍,发现并不行
t_ref看起来好像是请求包的referer,用burpsuite抓包看一下,并没有发现有这一项,自己加一个试试
查看源代码,发现好像是找到了注入点
在此用burpsuite,只不过这次使用构造好的代码,代码和上一关相同
点击按钮后,成功弹窗
壹拾贰
貌似都是一个妈生的!!
t_ua,再加上后面那一串,user-agent?
至于是不是,抓包看看呗!
先将抓到的包发送至repeater看看,结果发现猜想正确!
回到proxy,修改相应内容后,发送,点击按钮,然后得到弹框
壹拾叁
预感和前几关有异曲同工之妙
用burpsuite抓包后先发送给reapeater,然后点击send,查看回包,与查看源代码类似
t_cook难道就是cookie吗?
证明确实如此,与上一关一样,不在赘述
壹拾肆
这一关的照片打不开,略过把暂时
壹拾伍
让我们想个办法走出去,可是发现好像都不知道该怎么进去
查看源码,发现源码中有一个ng-include,该指令一般用于包含外部html文件。所以我们需要包含一个有漏洞的页面
level1不就是一个现成的有漏洞的页面吗?
构造语句
level15.php?src='http://192.168.80.128/xss/level1.php?name=<img src=null onerror = alert(1)>'
即可完成关卡
壹拾陆
这一关是这样的
抓包查看是这样的,好像可以直接构造代码
先用万能语句看看哪些字符被过滤,可以看到大写转换成了小写,将script转义
使用和上一关类似的 img 标签,发现不能使用空格,使用%0a代替空格
最终问题得到解决,得到弹窗
壹拾柒
这一关似乎将两个参数拼接在了一起
可以用其他数值再确认一下,证明确实如此
这个点似乎可以利用起来,构造如下的语句
回到页面移动鼠标即可造成弹窗
壹拾捌
貌似一样?但是肯定不会这么简单的
但事实。。。这一关和上一关一样
壹拾玖
看起来也是一样的啊,但是用之前的方法并不可行
查看源码,其对引号做了实体编码处理,并且将关键字作为普通文本,我没发现问题,但是看网上别人给出的解决方案,是利用给swf传参version,然后在构造标签插入
../xss/xsf03.swf?version=1
../xss/level19.php?arg01=version&arg02=<a href="javascript:alert(123)">click me</a>
贰拾
与19关解决方法一样,只是用的插件不同