xss-labs(11-15)
level-11 Http头修改Refer
初次尝试
主页没有什么特别的

看看前端源码,发现四个隐藏框,且t_ref有值

现在地址栏传值试试:?keyword=good%20job!&t_link=1&t_history=2&t_sort=3&t_ref=4
t_sort 成功传入值:

引号被实体转义了?keyword=good%20job!&t_link=1&t_history=2&t_sort=3&t_ref=4

这个t_ref没有过滤,能不能修改他的值呢?
?keyword=123&t_sort=1" type="text"><script>alert(1)</script>

前面看到地址栏是什么,t_ref就是什么,而http头的refer也是那个值,你说巧不巧
hackbar里把refer改为1

t_ref的值也改变了

refer的值改为" type="text " onmouseover="alert(1),出现文本框

鼠标移动过去,触发弹窗

源码分析

t_sort的值传给str00,经过实体转义后传入隐藏框
Http的refer经任何过滤<>后传给str33,才让我们有了可乘之机
level-12 Http头修改User Agent
初次尝试
打开主页,老川原砾了

看看前端页面,这个user-agent立马引起了我的注意,用脚趾想一想,应该是修改user-agent的值,触发弹窗

修改值为" type="text" onmouseover="alert(1)

隐藏框出现

移动过去触发弹窗

源码分析
和levle11没有什么区别,只是Refer换成了User Agent

level-13 修改Cookie
初次尝试
cookie引起我的警觉

cookie editor修改cookie: " type="text" onmouseover="alert(1)
(可能由于插件的原因导致修改不成功,请更换浏览器或插件解决)

刷新后出现文本框

移动过去触发弹窗

源码分析
和前面两个差不多

level-14
自动跳转到那个网址,但是失效了

看看前辈的吧
15 AngularJS的javascript框架漏洞

看看前端代码

无从下手,看看源码,就短短的几行,实体转义了src的值

ng-include
使用了ng-include这个表达式的意思是当HTML代码过于复杂时,可以将部分代码打包成独立文件,在使用ng-include来引用这个独立的HTML文件。
定义和用法
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
引用文件名要加单引号 即 ng-include=" ‘index.html ’ "
特别说明
1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行,不能加载,如果需要控制器处理需要在主页中注册
3.ng-include,加载外部html中含有style标签样式可以识别
4.ng-inclue,外部html中的link标签可以加载
分析与实践
由此清楚了ng-include'的用法,加载一个外部的html文件,尝试加载前面做过的level
竟然在下面出现了level 4的页面!
由于level 4产生XSS的页面是:
http://localhost/xss-lab//level4.php?keyword="onmouseover='alert(1)'
【最终payload】
猜想构造level 5的payload:
http://localhost/xss-lab/level15.php?src='level4.php?keyword=%22%20onmouseover=alert(1)%20%22'
其中%20为空格的url编码,%22为”的url编码,将鼠标移动到下面的输入框中触发,成功!
好吧上面是我粘贴的源码自带的解析,我的不知道怎么回事,无法包含外部html文件

浙公网安备 33010602011771号