XSS_Labs靶场通关

XSS-labs靶场(1-20)

开始通关!

XSS_Labs靶场通关

 

0x01 (直接漏洞注入)

反射型xss注入
1、遇到?name=text,尝试参数注入 注入语句: <script>alert(‘xss')</script>

XSS_Labs靶场通关

 

0x02(闭合符号)

从url入手开始看,依然是get方式传递参数,应该还是反射型xss 闭合" "> 使用"> ….//

XSS_Labs靶场通关XSS_Labs靶场通关

 
<script>alert(‘xss')</script> 其中<和>都被编码成了html字符实体 1、猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理 2、但是问题是这里的js代码在标签属性值中,浏览器是无法执行的

htmlspecialchars()编码 “<” “>” &lt;代表小于号(<) &gt;代表大于符号(>) &le;表示小于或等于符号(<=) &ge;表示大于或等于符号(>=)

思路: 

  1. 既然上面的恶意代码被编码了,那么只能从属性值中的恶意代码处进行突破
  2. 要想浏览器执行这里的弹窗代码,只需要将属性的引号和标签先闭合就可以

漏洞代码:

"><script>alert('xss')</script>//

1、左边的">去闭合原先的" 2、右边的//去注释原先的">

XSS_Labs靶场通关

查看源码后

XSS_Labs靶场通关

 

0x03(使用不带有<>的事件代码,例如:onfocus、onmouseover)

首先使用<script>alert("xss")</script> 进行测试

XSS_Labs靶场通关

  这里可以通过<input>标签的一些特殊事件来执行js代码
特殊事件:onfocus onfocus 事件在对象获得焦点时发生。 onfocus 通常用于 <input>, <select>, 和<a>
最简单的实例就是网页上的一个输入框, 当使用鼠标点击该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候, 此时输入框就会触发onfocus事件.因此点击当前页面的输入框就可以完成弹框了。
  1、通过onfocus去绕过< >被编码的情况 2、'onfocus=javascript:alert('xss') > 构造代码:level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索  

XSS_Labs靶场通关

0x04

首先使用<script>alert("xss")</script> 进行测试

XSS_Labs靶场通关

箭头1处直接将<和>编码转换了 箭头2处却是把<和>删除了 但是,事件触发却不需要使用这两个符号。 用上一关的代码:level4.php?keyword="onmouseover="alert(/xss/)

XSS_Labs靶场通关

 

0x05(<a>标签绕过)

1、首先使用<script>alert("xss")</script> 进行测试

XSS_Labs靶场通关 

2、使用”onfocus=javascript:alert(“xss”)”>

XSS_Labs靶场通关

  观察: 1、<script>标签会被替换成<scr_ipt> 2、onfocus事件会被替换成on_focus  

XSS_Labs靶场通关XSS_Labs靶场通关

 

0x06(<a>标签的大小写绕过)

首先使用<script>alert("xss")</script> 进行测试

XSS_Labs靶场通关XSS_Labs靶场通关

 

XSS_Labs靶场通关

 

0x07(双写关键字绕过)

1、首先使用<script>alert("xss")</script> =>中的<script>被过滤掉 2、使用onfocus=javascript:alert("xss”) =>中的onfocus被过滤成focus 3、使用"><a href=javascript:alert("xss")>xss</a>// =>中的href被过滤掉
尝试双写关键字绕过

XSS_Labs靶场通关

 

0x08(将ri编码十六进制绕过)

首先尝试<script>alert("xss")</script> =>script中的ri被替换过滤成r_i,所以尝试编码绕过

XSS_Labs靶场通关

 
并且发现我们输入的payload漏洞代码,是被传输到友情链接的<a>标签中 所以下一步测试<a>标签 *经过测试,html实体编码和hex编码都可以绕过

XSS_Labs靶场通关

漏洞代码:javasc&#x72;&#x69;pt:alert(/xss/)

 

0x09

首先使用之前关卡的漏洞代码: <script>alert("xss")</script> javasc&#x72;&#x69;pt:alert(/xss/)

XSS_Labs靶场通关

  查看源码发现:

XSS_Labs靶场通关 

漏洞代码:javasc&#x72;&#x69;pt:alert('http://')

XSS_Labs靶场通关

   

0x0A(更改from标签中input的type属性)

首先使用之前关卡的漏洞代码: <script>alert("xss")</script> javasc&#x72;&#x69;pt:alert(/xss/)

XSS_Labs靶场通关

 

解题技巧是: 1、将input标签的type类型的hidden改为text 2、将漏洞代码填写到value中

XSS_Labs靶场通关

 

0x0B(前端代码更改,加入onmouseover)

延续上一题解法:

XSS_Labs靶场通关

另一种解法: 看着参数t_ref是用于接收Referer参数的  

0x0C(使用brup更改User_Agent)

延续上一题的解法

XSS_Labs靶场通关

另一种解法: 查看参数t_ua传的值,就可以判断该参数就是传递User_Agent

XSS_Labs靶场通关

 

使用brupsuite抓包传递漏洞代码

XSS_Labs靶场通关XSS_Labs靶场通关

 

0x0D(使用brup更改Cookie)

延续上一关技巧,直接更改前端代码

XSS_Labs靶场通关

 
第二种解法,通过brupsuite抓包重构数据包

XSS_Labs靶场通关XSS_Labs靶场通关

   

0x0E(Exif隐写)

XSS_Labs靶场通关

   

0x0D(ng_lnclude调用外部URL)

查看源码后

XSS_Labs靶场通关

 
ng_lnclude的用法: 1、ng-include 指令用于包含外部的 HTML文件。 2、包含的内容将作为指定元素的子节点。 3、ng-include 属性的值可以是一个表达式,返回一个文件名。 4、默认情况下,包含的文件需要包含在同一个域名下。
 
值得注意的是: 1. ng-include,如果单纯指定地址,必须要加引号 2. ng-include,加载外部html,script标签中的内容不执行 3. ng-include,加载外部html中含有style标签样式可以识别
  ng_lnclude的作用就是加入一个外部的url链接地址 随后去查看源码

XSS_Labs靶场通关XSS_Labs靶场通关

 
漏洞代码:?src='level1.php?name=<a href="javascript:alert(/xss/)">xss<a/>'
   

0x0E(空格解析绕过)

XSS_Labs靶场通关

尝试空格解析 <img src="" one rror=alert("xss")> 
onerror事件:当img图片加载失败会触发的事件

XSS_Labs靶场通关XSS_Labs靶场通关

 

0x0F(两个参数自动拼接)

XSS_Labs靶场通关XSS_Labs靶场通关

因为谷歌和火狐浏览器插件的原因,弹窗没办法正常弹出,推荐使用猎豹浏览器
 

0x0G

与上关一致payload ?arg01="onmouse&arg02="alert(/xss/)

XSS_Labs靶场通关

持续更新...end#

 

 
上一篇:16-10000 前端JavaScript 输入输出语句 高频基础使用知识点


下一篇:javaweb2:javascript+正则表达式