xsslab练习

这篇文章详细介绍了从level1到level19的一系列XSS攻击策略,包括利用get型漏洞、闭合标签、事件触发、HTML实体编码、HTTP头部修改等多种方法绕过过滤机制,展示了解决XSS问题的过程和技术。
摘要由CSDN通过智能技术生成

level1

第一关比较简单,由于漏洞为get型,只需要更改url,将name后面修改为<script>alert(666)</script>,就可以插入弹窗了

level2

通过查询源代码,可以看到我们输入的数据,是在表单中的value属性内

于是我们插入js之前需要先将input闭合,在输入框中输入

"><script>alert(666)</script>#

成功通关

level3

由于输入script,"<"会被转换为html编码,所以这一关无法采用标签,因为标签都是带有"<"的,因此采用事件,我们可以使用一个onclick事件,经过查询源代码,我们发现可以用单引号去闭合

输入框内输入如下代码

' onclick='alert(1)

输入后再点击此聊天框

成功过关

level4

此题与level3解题思路一致,查询源码发现只需改用双引号闭合即可

使用如下代码

" onclick="alert(1)

 level5

在我们试探完防御机制后可以发现:ri会被过滤成r_i,on也会被过滤为o_n,所以事件也行不通,那我们只能换一个标签进行攻击,在尝试下,我们发现href标签不会被过滤,闭合后就可以插入js代码了

"><a href="javascript:alert(1)"#

查询后点击图片

成功过关

level6

还是经过试探我们发现此关对于href进行了过滤,但是对大小写并未做出调整,所以我们采取将标签变为大写的方式进行绕过,同样闭合后插入js代码

"><SCRIPT>alert(666)</SCRIPT>#

成功通关

level7

这关我们会发现script被过滤掉了,经过探查后,我们发现在网页第一次查询过script之后不会进行第二次查询,所以我们只需要在script中插入一个script即可,这样在网站过滤时,就会留下一个script,之后就可以开始闭合插入js代码了

"><scrscriptipt>alert(666)</scrscriptipt>#

 成功通关
同理on也会被过滤掉,所以我们也可以选择插入的方式来绕过,这里不做演示了

level8

由于此关对于大部分大小写以及标签和事件都做了过滤,所以只能使用html实体编码进行绕过

java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(666)

添加后点击友情链接

完成通关

level9

此关在上一关的基础上,加入了地址的检查,这一关会检查输入的数据中是否会有http://字段,所以需要在输入的字段中加入该字段

java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert('http://')

 完成通关

level10

此关由于没有输入框,我们只能对url进行更改,经过查询发现实际input的地方是t_sort处,同时需要对前面的双引号进行闭合

t_sort=666" onclick=alert(666) type="text"#

成功过关

level11

通过查询源代码我们可以得知,所有的变量都是用来迷惑攻击者的,真正的输入点是在http头部的

所以解题思路就为:抓包,修改http报头,插入代码

可以看到,成功插入了,接下来就是闭合并插入代码了

wsx" onclick="alert(666)" type="text"#

点击输入框,成功通关

level12

此关与11相差不大,我们依旧进行抓包,抓包后我们就会发现t_ua的value后的内容就是user agent后面的内容,那我们就可以更改user agent进行闭合插入代码,并forward

wsx" onclick="alert(666)" type="text"#

 level13

 此题与前两题相同,只是这回更改的是cookie,不做演示了

level14

iframe调用的文件地址无法访问,本体题目已经无法做了

level15

本关的进入方式比较特殊,由于14关出现问题,所以我们要在13关修改url为15.php进入本关

本关的变量和提示实在太少,只能通过查看源代码进行解题

通过查询我们可以得知变量名为src,

通过试探,发现所有的输入都会被注入到 ng-Include:  之后,所以先了解一下 ng-Include它的作用

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

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

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

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

也就是说它的参数是一个html页面

所以我们可以更改src来访问其他页面,我们首先输入一个界面,如"level1.php"

可以看到,成工访问到了,由于level15没有注入点,所以我们可以将代码注入到level1中

加上我们查看源代码可知通过htmlspecialchars($str)函数,有些特殊字符被转码了,转为了html实体,所以我们采用其他标签的事件属性触发

src='level1.php?name=<img src= ""onerror=alert(1)>'

成功通关

level16

通过查看源码我们会发现:

script与大小写均被过滤,嵌套的部分会被空格代替,换标签输入发现空格也被编码了,所以我们将空格采用url编码输入,空格的url编码为%0A

<img%0Asrc=1%0Aonerror=alert(1)>

 成功通关

level17

通过查询源码,我们可以发现,url中的两个参数被传到embed标签下,并且其本身就为闭合,我们就不用去考虑了,最后只需注意htmlspecialchars函数

所以绕过的方式如下

arg01=a&arg02= onmouseover=javascript:alert(1)

只需将鼠标移动到图片上就可以运行此js代码了

成功通关

level18

与十七关通关方式相同,embed处代码没有差别

level19&level20

解题方法为flash xss,这里不做详解了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值