【xss靶场1-9】见框就插:闭合、过滤、编码、触发事件、http头、标签

目录

一、推荐

Less1(无过滤)

特点:

利用:

Less2(闭合标签)

特点:

利用:

Less3('闭合+触发事件)

特点:

利用:

Less4(<>被过滤+"闭合+触发事件)

特点:

利用:

Less5(构造链接+"/>闭合)

特点:

利用:

Less6(构造链接+"/>闭合+大小写混淆绕过)

特点:

利用:

Less7(构造链接+"/>闭合+关键字过滤+双写混淆绕过)

特点:

利用:

Less8(编码绕过+关键字过滤)

特点:

利用:

 Less9(编码绕过+关键字过滤+http头)

特点:

利用:


一、推荐

【XSS跨站合集】反射型、存储型、DOM类XSS原理;输出在HTML、CSS、Javascript代码中icon-default.png?t=M666https://blog.csdn.net/qq_53079406/article/details/123694180?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165802668016781818737899%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165802668016781818737899&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-123694180-null-null.185^v2^control&utm_term=xss&spm=1018.2226.3001.4450



Less1(无过滤)

特点:

参数中插入

无过滤

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

 



Less2(闭合标签)

特点:

参数中插入

被HTMLL编码了

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>


右键查看源码

可以看到我们输入的内容被HTML实体编码了

扩展:

HTML实体编码,格式 以&符号开头,以;分号结尾

十进制的ASCLL编码,格式: 以符号&#开头,分号;结尾

 


打开开发者模式(Ctrl+shift+I)

定位到输入框位置

可以看见是在value标签框里

 


尝试闭合标签

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

可以在URL中输入,也可以再搜索框中输入

 

 



Less3('闭合+触发事件)

特点:

参数中插入

被HTMLL编码了

单引号闭合

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

 


右键查看源码

可以看到我们输入的内容被HTML实体编码了

扩展:

HTML实体编码,格式 以&符号开头,以;分号结尾

十进制的ASCLL编码,格式: 以符号&#开头,分号;结尾


 

打开开发者模式(Ctrl+shift+I)

定位到输入框位置

可以看见是在value标签框里

 


尝试闭合标签

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

从搜索框中输入

发现已经没效果了

 

 前后出现了单引号,考虑单引号闭合他们

 


尝试使用触发事件函数来弹窗

扩展:

onclick(点击)

onerror(加载外部文件(文档、图像)发生错误时触发)

onmouseover(鼠标滑过)

……

'οnclick='alert()

 然后再点击一下输入框

 



Less4(<>被过滤+"闭合+触发事件)

特点:

参数中插入

被HTMLL编码了

<>被过滤为空了

双引号闭合

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

 


右键查看源码

发现<>都变没了,变成了空的


 

打开开发者模式(Ctrl+shift+I)

定位到输入框位置

可以看见是在value标签框里,还是首先考虑闭合

 


使用"><script>alert(/xss/)</script>已经无效了

因为<>都被过滤了


尝试使用触发事件函数来弹窗

扩展:

onclick(点击)

onerror(加载外部文件(文档、图像)发生错误时触发)

onmouseover(鼠标滑过)

……

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

 然后移动鼠标

 

 



Less5(构造链接+"/>闭合)

特点:

参数中插入

特殊标签都被加上了下划线

")闭合

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>​​​​​​​

 


右键查看源码

发现标签被加了下划线


 

打开开发者模式(Ctrl+shift+I)

定位到输入框位置

可以看见是在value标签框里,还是考虑绕过,或者闭合

 


测试能否双写绕过

使用<scrscriipt>alert()</script>

行不通


尝试使用触发事件函数来弹窗

扩展:

onclick(点击)

onerror(加载外部文件(文档、图像)发生错误时触发)

onmouseover(鼠标滑过)

……

都被加上了下划线


 尝试

javascript

可行


通过闭合前面的value,在后面构造一个链接

点击触发弹窗

payload:" /> <a href=javascript:alert()>链接</a>

 <input name=keyword value=""> <a href=javascript:alert()>something</a>">

 

 



Less6(构造链接+"/>闭合+大小写混淆绕过)

特点:

参数中插入

特殊标签都被加上了下划线

">闭合

构造链接

大小写绕过

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

 


右键查看源码

发现标签被加了下划线


 打开开发者模式(Ctrl+shift+I) 

定位到输入框位置

可以看见是在value标签框里,还是考虑绕过,或者闭合


尝试使用触发事件函数来弹窗

扩展:

onclick(点击)

onerror(加载外部文件(文档、图像)发生错误时触发)

onmouseover(鼠标滑过)

……

都被加上了下划线

 


 尝试

javascript

可行

 


通过闭合前面的value,在后面构造一个链接

点击触发弹窗

payload:" /> <a href=javascript:alert()>链接</a>

 <input name=keyword value=""> <a href=javascript:alert()>something</a>">

发现链接点不了

查看后发现是href被加了下划线

 


考虑绕过

考虑大小写绕过,或者双写绕过

" /> <a hRef=javascript:alert()>链接</a>

未被过滤了

 



Less7(构造链接+"/>闭合+关键字过滤+双写混淆绕过)

特点:

参数中插入

首先被全部转换为小写,然后关键字被过滤

">闭合

构造链接

双写绕过

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

 


右键查看源码

发现标签被过滤了


尝试使用触发事件函数来弹窗

扩展:

onclick(点击)

onerror(加载外部文件(文档、图像)发生错误时触发)

onmouseover(鼠标滑过)

……

发现也被过滤了


 尝试

javascript

发现也被过滤了

 


考虑绕过过滤

考虑大小写绕过,或者双写绕过

" /> <a hRef=JavaScript:alert()>链接</a>

发现全部被转换为了小写,且被过滤了

 "> <a hrhrefef='javascriscriptpt:alert()'>链接</a>

 


或者直接弹窗

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

 



Less8(编码绕过+关键字过滤)

特点:

参数中插入

首先被全部转换为小写,然后关键字被过滤

编码绕过

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>


右键查看源码

发现关键字被加了下划线

 


 尝试

javascript

发现也被加了下划线


考虑绕过过滤

考虑大小写绕过,或者双写绕过

javascript:alert()

被进行了编码,和过滤


尝试进行HTML编码绕过

可以选择局部字符编码,也可以全部编码绕过

 

 

就变成了

javascri&#112;&#116;:alert()

 


全部编码就是

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

 

 



 Less9(编码绕过+关键字过滤+http头)

特点:

参数中插入

首先被全部转换为小写,然后关键字被过滤

编码绕过

添加http头

反射性

利用:

见空就插,看见有参数,插

<script>alert()</script>

提示不合法

http://<script>alert()</script>

添加链接后,点击无效果

 右键查看源码

关键字是被加上了下划线

 


尝试进行HTML编码绕过

可以选择局部字符编码,也可以全部编码绕过

http://javascript:alert()

就变成了

javascri&#112;&#116;:alert()//http://

 


全部编码就是

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;//http://

 

 ​​​​​​

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你可以使用Leaflet.draw件来实现动态绘制多边形,并且可以使用双击事件来闭合多边形。下面是一个基本的实现示例: 1. 首先,在页面中引入Leaflet和Leaflet.draw件的JS和CSS文件: ```html <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js"></script> ``` 2. 创建一个Leaflet地图: ```javascript var map = L.map('map').setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors', maxZoom: 18 }).addTo(map); ``` 3. 添加绘图控件: ```javascript var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); var drawControl = new L.Control.Draw({ edit: { featureGroup: drawnItems }, draw: { polygon: true, polyline: false, rectangle: false, circle: false, marker: false } }); map.addControl(drawControl); ``` 4. 监听多边形绘制完成事件,并添加双击事件来闭合多边形: ```javascript map.on('draw:created', function(e) { var layer = e.layer; layer.on('dblclick', function() { if (layer instanceof L.Polygon) { layer.addLatLng(layer.getLatLngs()[0]); } }); drawnItems.addLayer(layer); }); ``` 这样,当用户完成绘制多边形后,双击多边形的任意一个点就可以将多边形闭合了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值