level-11 Http头修改Refer

初次尝试

主页没有什么特别的

xss-labs(11-15)_加载

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

xss-labs(11-15)_html_02

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

​t_sort​​ 成功传入值:

xss-labs(11-15)_sql注入_03

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

xss-labs(11-15)_转义_04

这个t_ref没有过滤,能不能修改他的值呢?

​?keyword=123&t_sort=1" type="text"><script>alert(1)</script>​

xss-labs(11-15)_html_05

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

hackbar里把refer改为1

xss-labs(11-15)_html_06

t_ref的值也改变了

xss-labs(11-15)_php_07

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

xss-labs(11-15)_sql注入_08

鼠标移动过去,触发弹窗

xss-labs(11-15)_sql注入_09

源码分析

xss-labs(11-15)_加载_10

t_sort的值传给str00,经过实体转义后传入隐藏框

Http的refer经任何过滤<>后传给str33,才让我们有了可乘之机

level-12 Http头修改User Agent

初次尝试

打开主页,老川原砾了

xss-labs(11-15)_转义_11

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

xss-labs(11-15)_sql注入_12

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

xss-labs(11-15)_加载_13

隐藏框出现

xss-labs(11-15)_php_14

移动过去触发弹窗

xss-labs(11-15)_转义_15

源码分析

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

xss-labs(11-15)_sql注入_16

level-13 修改Cookie

初次尝试

​cookie​​引起我的警觉

xss-labs(11-15)_加载_17

​cookie editor​​修改​​cookie​​: ​​" type="text" onmouseover="alert(1)​

xss-labs(11-15)_sql注入_18

刷新后出现文本框

xss-labs(11-15)_转义_19

移动过去触发弹窗

xss-labs(11-15)_加载_20

源码分析

和前面两个差不多

xss-labs(11-15)_加载_21

level-14

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

xss-labs(11-15)_加载_22

看看前辈的吧

​level-14​

15 AngularJS的javascript框架漏洞

xss-labs(11-15)_转义_23

看看前端代码

xss-labs(11-15)_html_24

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

xss-labs(11-15)_html_25

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文件