xss-labs(WriteUp)

news2025/3/3 17:54:57

xss-labs

  • 先讲讲什么是跨站脚本攻击XSS(Cross Site Scripting)

XSS原理

  • 本质上是针对html的一种注入攻击,没有遵循数据与代码分离的原则,把用户输入的数据当作代码来执行
    xss跨站脚本攻击是指恶意攻击者往Web页面里插入恶意脚本代码(包括当不限于js,flash等等),当用户浏览该页面时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的目的。为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,所以将跨站脚本攻击缩写为XSS。

level1

image-20221216130147548

查看题目发现,url中可以使用name传参,并且参数会回显在页面上,这就满足了xss的要求

查看源码:只要出发了alert就可以过关,于是我们构造代码:

<script>alert(1)</script>
image-20221216130702842

成功过关

image-20221216130830506

如图,恶意代码回显,导致恶意代码执行,造成xss漏洞

level2

image-20221216130953292 image-20221216131015739

input输入框输入的值被回显到value之中,我们可以使用双引号闭合value,再使用onclick等相关事件函数进行触发相关代码:

image-20221216131238635

image-20221216131306391

此时,当我们点击input框,即可触发事件

image-20221216131346797

方法二:

可以将input框闭合,使用新的标签:

"><a onclick=alert(1)>hacker</a>//

image-20221216131730043

此时,我们将input框闭合了,并且回显了一个新的a标签,点击即可触发事件

(使用其他的标签或事件亦可,如:img body svg input button标签等等,onload,onerror,onfocus,onmouseover 事件 等等)

level3

本关把尖括号转移了,所以我们不能闭合标签,

我们可以闭合单引号,使用onfocus等事件

image-20221216132341214

xss代码:

' οnfοcus=alert(1) '

image-20221216132607274

当焦点在input框中即可触发事件

level4

和上一关一样,只不过闭合双引号

image-20221216132833965

level5

这一关把on给过滤了

image-20221216133058825

< script 也过滤了

image-20221216133403349

我们可以使用JavaScript伪协议

伪协议是为关联应用程序而使用的,JavaScript伪协议实际上是把
javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。 将javascript代码添加到客户端的方法是把它放置在伪协议说明符
javascript:后的URL中。 这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript
的解释器运行。

image-20221216133834460

xss代码:

"><a href=javascript:alert(1)>hacker</a>//
或
"><iframe src=javascript:alert(1)></iframe>//

此处js伪协议写在a标签的href属性中,将Javascript后面的代码当作js代码执行

image-20221216134224702

level6

过滤更多了,我们尝试上一题方法,发现href被过滤,我们尝试大小写绕过:hRef发现可行

image-20221216134918561

image-20221216135032318

xss:

"><a hRef=javascript:alert(1)>hacker</a>//

level7

" oonnclick=alert(1) "
或
"><scrscriptipt>alert(1)</scrscriptipt>

双写绕过,此处将on,script替换为空

image-20221216140256840

level8

这一关我们输入的参数会当作下面a标签的href地址,于是我们可以使用js伪协议:

javascript:alert(1)

image-20221216140901188

但是查看源码发现:

image-20221216141207967

script被过滤了

于是我们想到了html实体编码

将s进行编码,可得:&# x0073;

html会将该编码识别为字母: s

于是xss代码为:

java&#x0073;cript:alert(1)

参考链接:

什么是html实体编码?

HTML 实体是一段以连字号(&)开头、以分号(;)结尾的字符串。用以显示不可见字符及保留字符 (如 HTML 标
签)
在前端,一般为了避免 XSS 攻击,会将 < > 编码为 &lt;&gt;,这些就是 HTML 实体编码。

实体编码后,字符就变成了普通的字符,引号不能去闭合其他的引号,只是一个普通字符。

HTML编码有以下几种方式

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

    <textarea name="" id="textarea" cols="30" rows="10">
        &lt;img src=&quot;localhost&quot;&gt;
     </textarea>
    

    结果是:

    <img src="localhost">
    
  2. ​ 十进制的ASCLL编码,格式: 以符号&#开头,分号;结尾

​ ascll编码对照表

<textarea name="" id="textarea" cols="30" rows="10">
    &#60;&#105;mg src&#61;"localhost"&#62;
  </textarea>

3、Unicode字符编码,格式: 以符号&#开头,分号;结尾

  <textarea name="" id="textarea" cols="30" rows="10">
    <img src&#0061;&#0034;localhost&#0034;>
  </textarea>

4、十六进制的ascll码,格式: 以&#x开头,分号;结尾

<textarea name="" id="textarea" cols="30" rows="10">
    <img src&#x3D;&#x0022;localhost&#x0022;>
  </textarea>

level9

题目描述与上题类似,但是查看源码,

image-20221216142830957

提示链接不合法,于是我们推断可能链接需要有 http:// 标识

javascript:alert('http://')

并且将 s 进行编码:

xss:

java&#x0073;cript:alert('http://')

编码网址

level10

查看源代码:

image-20221216151725316

经过尝试,我们可以向 t_sort 输入框传入值,将 " 进行闭合,使用 onclick事件,并且将type进行显示

xss代码:

?t_sort=" οnclick=alert(1) type="text" "

前面的type将后面的type给覆盖了,于是input框就回显出来了

image-20221216152135827

level11

查看源码:

image-20221216152300184

发现,t_ref 输入框的value值为 前一个页面的url值

有经验可知,该value值应该为请求头中的 Referer

于是我们使用bp抓包

image-20221216152619800

我们可以修改Referer值,将引号闭合,使用相关事件:

image-20221216152809029

image-20221216152828401

xss代码:

" οnmοuseοver=alert(1) type="text" "

level12

查看源码:

image-20221216152916353

发现value值为 UA,于是bp抓包修改ua头即可,与上题类似

level13

bp抓包

image-20221216153048456

该题为注入点在cookie

" οnmοuseοver=alert(1) type="text" "

level14

加载不了

level15

查看源码:

image-20221216154043491

AngularJS ng-include 指令

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

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

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

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

**payload ** 我们包含第一关的漏洞即可

?src='level1.php?name=<a href=javascript:alert(1)>aa</a>'

level16

查看源码:

image-20221216155234482

过滤了一些符号,以及script

由于过滤了 / 斜杠,我们可以使用单标签,如 img,但是此处将空格过滤了,我们可以使用 %0a,%0c,%0d等等 进行分隔

于是构造xss

?keyword=<img%0Dsrc=x%0Aonerror=alert(1)>

level17

我们发现,参数的值都传入了 src 中

image-20221216160006380

观察可知,该处src 没有加引号,可以使用空格分隔,利用拼接,巧妙解题

构造xss

image-20221216160748771

我们使用google查看,鼠标移入该区域即可过关

image-20221216160829527

level18

与上题一样

level19,20

-W7wroDUk-1671178441825)]

过滤了一些符号,以及script

由于过滤了 / 斜杠,我们可以使用单标签,如 img,但是此处将空格过滤了,我们可以使用 %0a,%0c,%0d等等 进行分隔

于是构造xss

?keyword=<img%0Dsrc=x%0Aonerror=alert(1)>

level17

我们发现,参数的值都传入了 src 中

[外链图片转存中…(img-Hq6OvVSr-1671178441825)]

观察可知,该处src 没有加引号,可以使用空格分隔,利用拼接,巧妙解题

构造xss

[外链图片转存中…(img-BVaWYM8A-1671178441826)]

我们使用google查看,鼠标移入该区域即可过关

[外链图片转存中…(img-dbAuDLyK-1671178441826)]

level18

与上题一样

level19,20

先放着

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis之codis和redis cluster对比

写在前面 codis和Redis cluster 都是Redis的集群方案&#xff0c;本文就一起来看下。 1&#xff1a;codis的组件和架构 codis的组件有4个&#xff0c;如下&#xff1a; codis server&#xff1a;基于redis进行了二次开发的组件&#xff0c;负责数据的读写 codis proxy&…

Halcon图像拼接

图像拼接在实际的应用场景很广&#xff0c;比如无人机航拍&#xff0c;遥感图像等等&#xff0c;图像拼接是进一步做图像理解基础步骤&#xff0c;拼接效果的好坏直接影响接下来的工作&#xff0c;所以一个好的图像拼接算法非常重要。 如按下图是将两张楼房图片拼接成一个图像。…

QT 学习笔记(九)

文章目录一、事件的接收和忽略1. 准备工作2. 接收和忽略二、event() 函数1. 简介2. 实例演示3. 总结三、事件过滤器四、总结&#xff08;细看&#xff09;1. 知识点汇总2. QT 的事件处理五、事件、事件的接收和忽略、event() 函数和事件过滤器代码1. 主窗口头文件 mywidget.h2.…

英语文本转语音软件哪个好?分享三个新手也能学会的工具

大家平时都是怎么学习英语的呢&#xff1f;课上老师让我们熟悉单词意思、巩固语法、多练阅读理解&#xff1b;其实通过练习听力来加强语感也很重要。很多小伙伴的阅读理解很好&#xff0c;但是听力却跟不上。这里教大家一个小技巧&#xff0c;就是在做阅读理解的时候&#xff0…

第十章TomCat详解

文章目录Tomcat的部署和启动Tomcat扮演的角色①对外&#xff1a;Web服务器②对内&#xff1a;Servlet容器深入理解为什么需要TomCat从目的开始出发遇到的问题总过程部署前提解压TomCat的目录文件启动Tomcat并访问首页如何部署一个项目访问对应的web资源专业版IDEA创建一个JavaW…

力扣(718.1143)补9.12

718.最长重复子数组 这题真的想不到。 看图的话会好懂很多。 class Solution { public int findLength(int[] nums1, int[] nums2) { int nnums1.length; int n2nums2.length; int[][] dpnew int[n1][n21]; int result0; for(int…

【区块链-智能合约工程师】第二篇:Solidity入门

文章目录Solidity极简入门HelloWorld数值类型三种函数类型函数输出变量作用域引用类型参考文章&#xff1a;一文速览2022十大智能合约开发工具 资料地址&#xff1a;WTF学院 Solidity极简入门 HelloWorld remix&#xff1a;在线智能合约开发IDE&#xff08;Integrated Deve…

DBCO-PEG-Aminooxy, Aminooxy-PEG-DBCO,氨甲基聚乙二醇环辛炔

DBCO-PEG-Aminooxy &#xff0c; Aminooxy-PEG-DBCO&#xff0c;二苯并环辛炔-聚乙二醇-氨甲基&#xff0c;氨甲基聚乙二醇环辛炔 Product specifications&#xff1a; 1.CAS No&#xff1a;N/A 2.Molecular weightMV&#xff1a;1000&#xff0c;2000&#xff0c;34000&#x…

小侃设计模式(十八)-发布订阅模式

1.概述 发布订阅模式又叫观察者模式&#xff08;Observer Pattern&#xff09;&#xff0c;它是指对象之间一对多的依赖关系&#xff0c;每当那个特定对象改变状态时&#xff0c;所有依赖于它的对象都会得到通知并被自动更新&#xff0c;它是行为型模式的一种。观察者模式内部…

被吹爆的JVM笔记,一招教会什么是JVM调优,资深架构师强推!

面试经常被问 JVM 如何调优&#xff1f;这个问题该怎么回答&#xff1f;没有实际调优经验怎么办&#xff1f; 一般面试时问JVM调优&#xff0c;主要是因为&#xff0c;这个技术并不是懂了Java就能自然懂的&#xff0c;需要明白一些底层原理&#xff0c;有一些深度。所以比较适合…

传奇客户端文件介绍注解教程,GM必备知识

传奇客户端文件介绍注解教程&#xff0c;GM必备知识 很多朋友架设微端&#xff0c;或者说修改传奇版本素材方面的内容的时候对于客户端很懵逼&#xff01; 尤其是新手朋友他并不知道传奇客户端里面哪个文件是对应什么内容的&#xff01; 今天我们将这些发出来分享给支持奇速的朋…

高压放大器在IDE压电元件及其在仿生翼中的应用

实验名称&#xff1a;IDE压电元件及其在仿生翼中应用研究 研究方向&#xff1a;仿生学 测试目的&#xff1a; 优化IDE压电元件结构和组分出发&#xff0c;目的是为了获得大驱动位移、综合性能良好的IDE驱动件。着重研究IDE压电元件的力学和电学性能、驱动特性和在仿生翼上的集成…

LVGL学习笔记(一)--- 环境搭建

LVGL全程LittleVGL&#xff0c;是一个轻量化的&#xff0c;开源的&#xff0c;用于嵌入式GUI设计的图形库。并且配合LVGL模拟器&#xff0c;可以在电脑对界面进行编辑显示&#xff0c;测试通过后再移植进嵌入式设备中&#xff0c;可以高效地进行开发。 一.嵌入式设备的移植 L…

企业请体育冠军明星代言,为何要在年前邀请

行业形势好&#xff0c;要把握住消费升级的机会&#xff1b;行业调整时&#xff0c;要抓住结构性增长的机会。实力背书、冠军代言、让品牌成为品类创新&#xff0c;中小型这几个概念与品牌自身的卖点&#xff0c;每一个放在光中小型企业的品牌上都能独当一面&#xff0c;当一款…

C/C++ 内存分布---变量所在哪个内存区域以及变量所占空间大小是多少?

C/C内存区域划分&#xff1a; 变量所在哪个内存区域以及变量所占空间大小是多少&#xff1f; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const …

基于JavaFX+Mysql实现(PC)足球联赛评分系统【100010048】

一、引言 1. 编写目的 本文档是概要设计文档的组成部分&#xff0c;编写数据库设计文档的目的是&#xff1a;明确数据库的表名、字段名等数据信息&#xff0c;用来指导后期数据库脚本的开发。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。 2. ### 术语表 …

GPT3动口,RT-1动手,智能机器人开卷; 代码开源!

机器学习 (ML) 研究的多个子领域&#xff08;例如计算机视觉和自然语言处理&#xff09;的最新重大进展是通过一种共享的通用方法实现的&#xff0c;该方法利用大型、多样化的数据集和能够有效吸收所有数据的表达模型。尽管已经有各种尝试将这种方法应于机器人技术&#xff0c;…

绘制雪夜圣诞树并封装为小程序

绘制雪夜圣诞树并封装为小程序 使用turtle绘制一颗雪夜圣诞树&#xff0c;然后封装成exe小程序送给你的朋友吧&#xff01; PS&#xff1a;只能在windows运行。 转载注明本文链接和作者 先看效果图&#xff1a; 绘制雪夜圣诞树 由于代码有三百多行&#xff0c;我放在下面的两…

Web前端105天-day45-DOM

DOM01 目录 前言 一、DOM 二、DOM树 三、class 总结 前言 DOM01学习开始 一、DOM DOM: Document Object Model 文档 : HTML代码 -- 超文本标记语言对象 : 网页真正显示的是 HTML 转换出来的 对象类型 -- document模型 : 固定的规则 -- 代表把 HTML代码 转 JS对象网页真…

Jmeter(十七):利用jmeter插件收集性能测试结果汇总报告和聚合报告,利用PerfMon插件收集监控服务器资源指标

利用jmeter插件收集性能测试结果 汇总报告&#xff08;Summary Report &#xff09; 用来收集性能测试过程中的请求以及事务各项指标。通过监听器--汇总报告 可以添加该元件。界面如下图所示 汇总报告界面介绍&#xff1a; 所有数据写入一个文件&#xff1a;保存测试结果到本地…