XSS初级漏洞靶场
一、环境的搭建
可以在githb上找靶机包,使用小皮面板搭建在自己本机
与此文章类似(放在www目录下)
二、XSS漏洞简介
1、什么是xss漏洞
当用户访问被xss注入的网页,xss代码就会被提取出来。用户浏览器就会解析这段xss代码,也就是用户被攻击了。
用户最简单的动作就是使用浏览器上网,并且浏览器中有js解释器,可以解析js,然而由于浏览器不具有人格,不会判断代码是否具有恶意行为,只要代码符合语法规则,浏览器就可以解析这段xss代码。
简单来说,xss就是通过攻击者精心构造的js代码注入到网页中,并且浏览器解释运行了这段恶意的js代码,以达到恶意攻击浏览器的效果。
xss的攻击对象是用户浏览器,属于被动攻击,因此xss攻击涉及到三个角色
- 攻击者
- 用户浏览器
- 服务器
当然不要以为xss属于客户端攻击,受害者是用户,就会以为跟自己的网站、服务器安全就没有关系,网站的管理员也是用户之一,知识相对普通用户权限更高。
实现xss攻击需要具备的两个条件:
- 需要向Web页面注入精心构造的恶意代码
- 对用户的输入没有做果过滤,恶意代码能被浏览器成功执行
2、XSS漏洞的类型
xss漏洞的位置通常在于Web应用程序的输入验证或者输出过滤不严格的地方
类型:
- 存储型XSS(Stored XSS):攻击者将恶意脚本存储在服务器上,当其他用户访问这些恶意脚本的网页时,就会触发XSS漏洞
- 反射型XSS(Reflected XSS):恶意脚本作为URL参数发送给服务器,服务器将恶意脚本插入到返回的页面中,用户访问该页面就会执行该脚本
-
DOM-based XSS:攻击不涉及服务器端,而是通过修改页面的DOM结构来实现攻击,通常通过修改客户端脚本中的DOM元素来触发漏洞。
三、开始闯关
在此之前补充三个弹窗函数
alert()
confirm()
prompt()
反射型XSS
1、level1
语句插入


从源码可以看到,后端是get接收参数,并且没有过滤,
那么我们直接在参数的后面加上script标签
?name=test<script>alert(1)</script>
结果:

2、level2
和第一关差不多,按刚才的输入以此,看下情况

可以看到,我们的输入被原米原样输出,没有弹出警告框
看下后端源代码,我们的参数会经过这个过滤函数
htmlspecialchars()会将& (& 符号)、" (双引号)、' (单引号)、< (小于)、> (大于)等符号转换成HTML实体编码。
那么在h2标签中我们无法进行注入,但可以看到下面的input标签还有一个输出点,
在这里我们只需要绕过双引号和闭合尖括号就可以实现

效果:
test"><script>alert(0)</script>

第二种方法:鼠标点击事件onclock
也是对input标签进行操作,闭合前一个单引号,在后面加上点击事件的属性
test"onclick="alert(1)

点击一下:

3、level3
先试着用上一关的闭合单双引号试试,


这时候我们使用点击事件,来进行注入,先将单引号闭合
test'onclick='alert(1)

点击,查看效果

4、level4
我们在使用上一关的方法,直接使用利用属性,看能不能过
很明显可以直接过

看下源码,看考察的点是什么?
他在考查看我们input的闭合,会将尖括号替换为空

5、level5
我们直接在试一下上一关的方法
可以看到我们的onclick被过滤替换了

我们看源码,都替换了哪些

可以看到我们是不能再使用script标签了,带on的事件关键字也不能用了
我们不妨直接将input前面的标签闭合掉,使用a标签在href后直接使用javascript伪协议
1"><a href="javascript:alert(1)">1</a

6、level6
直接看源码可以看到,将我们上一关用的href也过滤掉了

在html的标签中,浏览器在解析过程中会忽略大小写的,而我们可以看到上面都是过滤小写,那我们不妨可以试试大小写绕过
(当然在javascript内部是严格区分大小写的)
1 " OnCLick="alert(1)

7、level7
我们可以看到这关是将关键词替换为空进行过滤,那么我们可以进行双写实现绕过

1"oonnclick="alert(1)

8、level8
此处添加友情链接,那么不就可以用我们a标签里href的javascript伪协议了吗

但可惜的是被过滤掉了

那我们直接使用编码就行

javascript:alert(1)

9、level9

查看源码可以看到过滤了我们很多关键字,并且必须需要加上http://才可以

那我们针对这些过滤使用实体编码来绕过

javascript:alert('http://;')
很明显我们添加上了我们想要的东西


相关文章:
XSS初级漏洞靶场
一、环境的搭建 可以在githb上找靶机包,使用小皮面板搭建在自己本机 与此文章类似(放在www目录下) 二、XSS漏洞简介 1、什么是xss漏洞 当用户访问被xss注入的网页,xss代码就会被提取出来。用户浏览器就会解析这段xss代码&…...
k8s pv与pvc理解与实践
参考文章: https://blog.csdn.net/qq_41337034/article/details/117220475 一、 pv/pvc简述 Pv是指PersistentVolume,中文含义是持久化存储卷是对底层的共享存储的一种抽象,Pv由管理员进行配置和创建,只要包含存储能力ÿ…...
Unity游戏输入系统(新版+旧版)
使用新版还是旧版 旧版 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c5 : MonoBehaviour {void Start(){}void Update(){// 注意要在游戏中 点鼠标键盘进行测试// 鼠标// 0左键 1右键 2滚轮if (Input.GetMouseButtonDown(0)…...
区块链媒体:链游媒体宣发渠道9个方法分享-华媒舍
在当今的游戏市场中,要想让自己开发的游戏脱颖而出,宣传策略的选择也至关重要。链游媒体是一种有效的宣发渠道,通过它们可以向广大玩家推广游戏并提高知名度。下面介绍9个链游媒体宣发渠道,帮助你的游戏走向成功。 1. 游戏公众号 …...
LeetCode--42
42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,…...
【解决】虚幻导入FBX模型不是一个整体
问题: 现在有一个汽车的fbx模型,导入虚幻引擎,导入后变成了很多汽车零件模型。 解决: 把“合并网格体”勾选上,解决问题。...
第四十八回 解珍解宝双越狱 孙立孙新大劫牢-Python模块和包概念与使用
吴用对宋江说,有个人,他是石勇的关系,与祝家庄的峦廷玉关系好,还是杨林、邓飞的老相识,他有一计.... 原来在宋江攻打祝家庄的时间段,山东海边登州也发生了一件事。登州山下有一家猎户,弟兄两个…...
【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器
【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器 一、声明式值转换器二、编程式值转换器注册三、MongoCustomConversions配置 虽然基于类型的转换已经提供了影响目标存储中某些类型的转换和表示的方法,但当仅考虑特定类型的某些值或属性进行转换…...
【axiox】前后端接口通讯数据交互
重要全局配置: axios.create(); 设置axios请求的公共配置信息。 service.interceptors.request.use((config)>{}) 请求拦截器 service.interceptors.response.use((res)>{},(err)>{}) 响应拦截器 const source axios.CancelToken.source(); 用…...
《Linux C编程实战》笔记:共享内存
共享内存是分配一块能被其他进程访问的内存。每个共享内存段在内核中维护一个内部数据结构shmid_ds(和消息队列、信号量一样),该结构定义在头文件linux/shm.h中,这是我从源码里抄的 #include<linux/shm.h> struct shmid_ds {struct ipc_perm shm_perm; /* 操…...
【GitHub】修改默认分支
GitHub的默认分支为main,但我们常常习惯使用master作为默认分支,那在GitHub上如何将master修改为默认分支呢? 全局修改 点击头像,选择菜单栏中的设置 输入master作为默认分支,然后执行updating即可! 单项…...
常用Linux 命令汇总
1、基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息 arch 显示机器的处理器架构 uname -m 显示…...
13 双口 RAM IP 核
双口 RAM IP 核简介 双口 RAM IP 核有两个端口,它又分为伪双端口 RAM 和真双端口 RAM,伪双端口 RAM 一个端口只能读,另一个端口只能 写,真双端口 RAM 两个端口都可以进行读写操作。同时对存储器进行读写操作时就会用到双端口 RAM…...
【高级数据结构】Trie树
原理 介绍 高效地存储和查询字符串的数据结构。所以其重点在于:存储、查询两个操作。 存储操作 示例和图片来自:https://blog.csdn.net/qq_42024195/article/details/88364485 假设有这么几个字符串:b,abc,abd&…...
国际化 Vue-i18n的安装与使用 (Vue2.0 / Vue3.0)
国际化 Vue-i18n的安装与使用 (Vue2.0 / Vue3.0) 一、Vue-i18n是什么? Vue-I18n是 Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中。简单来说就是可以帮助用户进行语言的切换” 二、使用步骤 1.引入库 代码…...
Linux 学习笔记(8)
八、 启动引导 1 、 Linux 的启动流程 1) BIOS 自检 2) 启动 GRUB/LILO 3) 运行 Linux kernel 并检测硬件 4) 挂载根文件系统 5) 运行 Linux 系统的第一个进程 init( 其 PID 永远为 1 ,是所有其它进程的父进程 ) 6) init 读取系统引导配置文件…...
【python】1.python3.12.2和pycharm社区版的安装指南
欢迎来CILMY23的博客喔,本篇为【python】1.python3.12.2和pycharm社区版的安装指南,感谢观看,支持的可以给个一键三连,点赞关注收藏。 目录 一、python3.12.2的下载与安装 1.1下载 1.2安装 二、pycharm的安装 2.1下载安装 2…...
Ubuntu将c++编译成.so文件并测试
一、准备cpp和h文件 创建test.cpp 在cpp中定义相加的函数funcAdd,给出函数的细节代码 #include <iostream> using namespace std;int funcAdd(int x, int y) {return xy; }创建test.h 在h中声明定义的函数,不需要任何细节 #ifndef __TEST__ #…...
数据分析-Pandas数据的探查面积图
数据分析-Pandas数据的探查面积图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…...
美团分布式 ID 框架 Leaf 介绍和使用
一、Leaf 在当今日益数字化的世界里,软件系统的开发已经成为了几乎所有行业的核心。然而,随着应用程序的规模不断扩大,以及对性能和可扩展性的需求不断增加,传统的软件架构和设计模式也在不断地面临挑战。其中一个主要挑战就是如…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
