前面XssChallege(一)中的内容个人觉得比较基础了,从这里开始就有一些细节上的东西要开始注意了
FOURTEEN
第十四关要连接外网,先跳过,一会找找其他的攻略
FIFTEEN
先查看源代码
上面有一个 src的链接,下面有一个疑似可以传入参数的地方
但是不知道这个 ng-include 是指什么
| ## 定义和用法
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。 |
---|
参数值
值 | 描述 |
---|---|
filename | 文件名,可以使用表达式来返回文件名。 |
onload | 可选, 文件载入后执行的表达式。 |
autoscroll | 可选,包含的部分是否在指定视图上可滚动。 |
语法
<_element_ ng-include="_filename_" onload="_expression_" autoscroll="_expression_" ></_element_>
ng-include 指令作为元素使用:
<ng-include src="_filename_" onload="_expression_" autoscroll="_expression_" ></ng-include>
所有的 HTML 元素都支持该指令。
从定义可以看出,这个函数用来包含外部的html文件,那意思是应该是包含一个xss漏洞的文件来实现进行弹窗。
发现通过src传参竟然可以传入到ng-include中,用来尝试一下上面的想方法
但是,不管怎么传入带有xss漏洞的文件都无法使函数正常执行,搞心态了
后来多方查询,原来是调用的js文件路径是google有关的,这个国内没法访问了,换成
[https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js]
之后传入[http://192.168.46.164/xssChallenges/xss/level15.php?src=%27level1.php%27]
页面是终于有反应了,于是通过第一关的方法,但是这一关会将尖括号过滤掉,xss构造的几种方法中
先试试伪协议?name=<a href=javascript:alert(1)>'
发现下面的payload字体变蓝,点击,弹窗成功。
既然伪协议成功,那么产生事件的方法应该也可以。
SIXTEEN
首先看到页面上显示着keyword中的参数,于是我们尝试将最终测试代码<script script "' OOnn>
传入
发现
之后查看源代码,
可以发现将script进行了过滤并且对大小写进行了过滤,但是未对单引号和双引号进行过滤并且on相关字符也可也使用。
第一感觉先 产生事件试试<img src='123' onerror=alert(/xss/)>
发现对空格,/都进行了url实体转义并且 o都变成了。。。这是什么o?
那先避开这些,空格用回车的编码代替,alert中的内容换成1试试
<img%0asrc='123'%0aonerror=alert(1)>
完成了!
SEVENTEEN
查看源代码,有一个embed标签,
标签定义及使用说明
标签定义了一个容器,用来嵌入外部应用或者互动程序(插件)。
注意:现在已经不建议使用 标签了,可以使用 、、、 等标签代替。
HTML 4.01 与 HTML5之间的差异
标签是 HTML 5 中的新标签。
属性
New :HTML5 中的新属性。
属性 | 值 | 描述 |
---|---|---|
height | ||
New | pixels | 规定嵌入内容的高度。 |
src | ||
New | URL | 规定被嵌入内容的 URL。 |
type | ||
New | MIME_type | 规定嵌入内容的 MIME 类型。 |
注:MIME = Multipurpose Internet Mail Extensions。 | ||
width | ||
New | pixels | 规定嵌入内容的宽度。 |
看到这里。。。反正我的火狐没有任何其他显示
查看源码发现url中的两个参数/xssChallenges/xss/level17.php?arg01=a&arg02=b
反映在源码中为 a=b
<h1 align=center>欢迎来到level17</h1>
<embed src=xsf01.swf?a=b width=100% heigth=100%><h2 align=center>成功后,
<a href=level18.php?arg01=a&arg02=b>点我进入下一关</a></h2>
然后将这两个参数从url中删除后再查看
两个参数均消失,可以看出,这里的两个参数分别是传入等号前后
本想通过参数b将前面的标签闭合然后产生事件,结果
<embed src=xsf01.swf?a=><input type="button" οnclick="alert(/XSS/)">>// width=100% heigth=100%><h2 align=center>
尖括号、单引号、双引号都被转义
╮(╯▽╰)╭
那就只能使用伪协议或者 事件了
当我尝试?arg01=a&arg02=b onclick='alert(1)'
和?arg01=a&arg02=b onmousedown=alert(1)
我的火狐就跟喝高了一样,无任何反应
so?
再看看这个embed,嵌入什么应用。。。
那我的页面也没有任何嵌入啊
于是,再查资料,发现火狐是要装插件的
那还是换chrome吧
随后尝试两个方法,第一个应该成功了吧,但是由于无法加载的问题,没能弹窗
但是第二个就弹窗成功了
EIGHTEEN
进入18关,映入眼帘,与上一关相同的情况
果然这个家伙还在
然后看到url中,相同的两个参数,源码中相同的位置
试一下上一关的办法
?arg01=a&arg02=b%20onmousedown=alert(1)
成功!
NINETEEN
一进入发现。。。好像跟上面一样?相同的三道题,不会吧
试一下上一关的方法,果然不行
查看源代码
<embed src="xsf03.swf?a=b οnmοusedοwn=alert(1)" width=100% heigth=100%>
这次src中加上了双引号,使得我们之前的空格没办法使onmousedown成为一个单独的属性了
先测试一下,总感觉不应该直接闭合这么简单
使用<script script "’ OOnn>
<embed src="xsf03.swf?a=<script script "' OOnn>" width=100% heigth=100%>
得到尖括号、双引号被转义,跟想的一样,肯定是不能直接用双引号闭合这么简单。
然后。。。
我搞了一整天,学的办法都轮着用了好几遍,但是没用,于是
恕我是个新手,就去找了找相关攻略,结果发现,后面这两关是有关flush xss的,额。。。由于现在flush已经很少有使用了,所以浏览器显示不出来也很正常,
再加上了解了一下这个是有反编译的成分在里面,于是我还是先放弃了,空闲的时间去好好研究一下。
话说,flush xss现在来说,应该算一个老的漏洞了吧。