XSS LABS - Level 16 过关思路

server/2024/9/17 18:59:39/ 标签: xss, 前端, web安全, 网络安全

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客

0x01:过关流程

进入靶场,右击页面,查看网页源码,搜索关键词 test 查看页面回显点:

页面只有一个回显点,跟前面关卡不同,回显点没有以属性的形式出现在标签内部,而是出现在了标签外部,像这种位置,想要触发 XSS 攻击,似乎只能依靠构造新的标签来触发了(最好的情况就是 <script> 标签未被过滤)。

不清楚目标后端是否做了过滤,就整个 Payload 大杂烩,看看目标后端都过滤了哪些内容:

 <sCrIpt>alert(1)</sCrIpt><a hRef="javaScript:alert(1)" onmouseover="alert(2)" onOnmouseover="alert(3)">test</a>

下面梳理一下目标后端的过滤规则:

PayloadEcho Print
<<
>>
script&nbsp;,且忽略大小写
空格&nbsp;
""

看来目标主要就是把标签之间的空格替换为了 &nbsp; ,并没有拦着我们构造标签,说到底,就是要绕过空格。首先传入一个基础的 Payload 看看效果:

 <input type="text" onmouseover="alert(1)">

那么我们下面就是去找,什么符号能够替代空格,来让标签依旧生效。而这个符号嘞,不一定是可见的。

测试方法也很简单,但是需要用到 BurpSuite(这款工具,在安全圈里非常出名,可以说是人手一个,教程我后续也会出哦,这里直接讲用法)。

首先,打开 BurpSuite,并打开 BurpSuite 中自带的浏览器:

使用 BurpSuite 自带的浏览器访问 XSS LABS Level 16 靶场,找到请求包,并发送到请求包模块:

 http://127.0.0.1/xss-labs/level16.php?keyword=%3Cinput+type=%22text%22+onmouseover=%22alert(1)%22%3E

下面定位到 Intruder 模块,并且修改请求包的内容,我们要把 + 号变成 %xx 的形式:

然后进入 Payload 中,按照如下格式进行配置,并开始攻击:

这个时候 BurpSuite 会弹出一个框框,告诉你攻击的结果,我们可以查看每个攻击返回的内容,找到能成功显示 input 标签的即可,如下图:

这种能替换空格的标签还不少,作者这里根据本次攻击结果列举一下(有心者可以做成字典哦):

 能成功显示的:%0a、%0c、%0d不太稳定的:%3e

那么本关的过关 Payload 如下:

 <input%0atype="text"%0aonmouseover="alert(1)">

0x02:源码分析

下面是 XSS LABS Level 16 的后端源码,以及我对其的部分笔记:

 <!DOCTYPE html><!--STATUS OK--><html>​<head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>// 修改 alert 默认行为,进入下一关window.alert = function() {confirm("完成的不错!");window.location.href = "level17.php?arg01=a&arg02=b";}</script><title>欢迎来到level16</title></head>​<body><h1 align=center>欢迎来到level16</h1><?phpini_set("display_errors", 0);$str = strtolower($_GET["keyword"]);    // 接收通过 GET 方式传入的 keyword$str2 = str_replace("script", "&nbsp;", $str);  // 将 script 替换为 &nbsp;// 下面都是一些常见的过滤形式,没啥。$str3 = str_replace(" ", "&nbsp;", $str2);$str4 = str_replace("/", "&nbsp;", $str3);$str5 = str_replace("   ", "&nbsp;", $str4);echo "<center>" . $str5 . "</center>"; // 忽略了,有一些不可显示的字符也可以用作空格,进行绕过?><center><img src=level16.png></center><?phpecho "<h3 align=center>payload的长度:" . strlen($str5) . "</h3>";?></body>​</html>

http://www.ppmy.cn/server/111110.html

相关文章

计算机网络 数据链路层1

数据链路层&#xff1a; 服务&#xff1a;将来自网络层的数据传输到相邻节点的网络层 作用&#xff1a;加强物理层传输原始比特流的功能 封装成帧---组帧&#xff1a;将来自网络层的数据在首尾添加特定信息(帧定界&#xff1a;帧的起始&#xff0c;结束) 差错控制 CRC循环冗余…

yolo-world开放词汇检测onnxruntime和tensorrt推理

onnxruntime推理 导出onnx模型&#xff1a; from ultralytics import YOLOWorld,YOLO model YOLOWorld(yolov8s-worldv2.pt) model.set_classes(["glasses","shoes"]) model.save("yolo_world.pt") model YOLO(yolo_world.pt) model.export(…

Web安全:SQL注入实战测试.(扫描 + 测试)

Web安全&#xff1a;SQL注入实战测试. SQL注入就是 有些恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容中&#xff0c;同时程序的本身对用户输入的内容过于相信&#xff0c;没有对用户插入的SQL语句进行任何的过滤&#xff0c;从而直接被SQL语句直接被服务端执行&am…

深入理解MySQL慢查询优化(2) -- SQL的执行流程

要优化一条SQL语句&#xff0c;要先理解SQL操作的执行流程 1. 不同SQL操作的执行流程 1.1 order by order by用于排序&#xff0c;如果用于排序的列上没有索引&#xff0c;就需要把整张表加载进内存进行排序&#xff0c;非常耗时。如果有索引&#xff0c;因为B树存储的数据本…

3.5 算术运算指令

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

2409d,d语言非常简单利用sqlite3库

1,在sqlite3d.c中 #include "sqlite3.h"2,直接使用了: import std.conv; import std.stdio; import std.string;import sqlite3d;extern(C) {static int callback(void *NotUsed, int argc, char **argv, char **azColName){int i;for(i0; i<argc; i){printf(&q…

直播平台直播API集成之Facebook篇

前言&#xff1a; 本篇我们来介绍如何使用Facebook 的直播API&#xff08;Facebook Live API&#xff09;创建直播。 准备工作&#xff1a; 1、你首先得有个facebook账号&#xff1b; 2、创建facebook应用&#xff0c;填写应用审核信息&#xff0c;上线前还要提前做好API权限申…

监控Nginx负载均衡后端服务器状态的策略与实践

在Nginx负载均衡的部署中&#xff0c;监控后端服务器的状态对于确保高可用性和服务连续性至关重要。通过检测后端服务器的状态&#xff0c;可以及时发现问题并采取措施&#xff0c;如故障转移或服务重启。本文将详细介绍如何检测Nginx负载均衡后端服务器的状态&#xff0c;包括…

explicit operator bool() const

1、在C中&#xff0c;显式布尔运算符explicit operator bool() const是一种特殊的成员函数&#xff0c;它用于将类对象显式地转换为布尔值。 2、在C中&#xff0c;explicit operator bool() const是一种显式布尔转换运算符。它允许对象在需要布尔值的上下文中&#xff08;如条件…

全国大学生数据建模比赛——深度学习

全国大学生数学建模比赛中&#xff0c;深度学习可以成为解决复杂问题的有力手段。 一、深度学习的优势在比赛中的体现 强大的模式识别能力&#xff1a;深度学习模型&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff0…

【C++】C++中的特殊类:懒汉模式与饿汉模式

文章目录 1. 单例模式简介2. 懒汉模式&#xff08;Lazy Initialization&#xff09;懒汉模式的实现懒汉模式的优缺点 3. 饿汉模式&#xff08;Eager Initialization&#xff09;饿汉模式的实现饿汉模式的优缺点 4. 懒汉模式与饿汉模式的选择5. 总结 1. 单例模式简介 单例模式&…

qt报错 error: undefined reference to `vtable for RelayDevice 解决方法

在 Qt 编程中&#xff0c;当出现错误 undefined reference to ‘vtable for RelayDevice’ 时&#xff0c;通常是因为类的虚函数没有实现&#xff0c;或者未正确实现虚析构函数。以下是一些可能的解决方法&#xff1a; 确保实现所有虚函数&#xff1a; 检查 RelayDevice 类中声…

深入理解MySQL慢查询优化(1) -- 优化策略

下面举一个例子&#xff0c;介绍MySQL中的优化策略 use employees; SELECT * FROM departments JOIN dept_emp ON departments.dept_no dept_emp.dept_no WHERE departments.dept_name Ting LIMIT 10; 如果你是MySQL你会如何执行这条查询语句。 1. 暴力策略 为了方便演示…

语义传输中单智能体语义知识库

在语义传输中涉及到的智能体包括信源数据模态、信宿智能任务以及信道传输环境。单智能体系统仅涉及一个智能体&#xff0c;该智能体独立完成感知、决策和执行任务&#xff0c;通常在不需要与其他智能体直接交互的环境中运行&#xff0c;能自主获取环境信息&#xff0c;并基于自…

【EI会议推荐】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;将于2024年09月20-22日在中国温州隆重举行。会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人…

PG逻辑解码

简介 postgresql中逻辑复制槽常备用于表级别的数据同步&#xff0c;多用于PG->PG之间跨版本的数据同步。Debezium插件便是利用逻辑复制的功能&#xff0c;可以将数据应用到异构数据库之间的数据同步。在不借助外部插件的情况下也可以同步读取复复制槽数据&#xff0c;实现数…

Eureka和Nacos有哪些区别?(面试版)

共同点&#xff1a; 都支持服务注册和发现功能 都支持服务提供者心跳方式做健康监测 Eureka和Nacos都支持集群&#xff0c;而且默认都是AP模式 Eureka和Nacos的区别有&#xff1a; Eureka的心跳是30秒一次&#xff0c;Nacos则是5秒一次&#xff08;心跳监测周期不一样&…

如何使用小乌龟清除认证缓存、还原版本、定位及常用开发工具集成

&#x1f600;前言 本篇博文是关于如何使用小乌龟清除认证缓存、还原版本、定位及常用开发工具集成&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大…

模拟算法专题——算法介绍算法讲解力扣实战应用

目录 1、模拟算法介绍 2、算法应用【leetcode】 2.1 替换所有的问号 2.1.1 算法思想 2.1.2 算法代码 2.2 提莫攻击 2.2.1 算法思想 2.2.2 算法代码 2.3 Z字形变换 2.3.1 算法思想 2.3.2 算法代码 2.4 外观数列 2.4.1 算法思想 2.4.2 算法代码 2.5 数青蛙 2.5.1 算…

权限的艺术:GRANT与REVOKE的SQL权限管理

标题&#xff1a;权限的艺术&#xff1a;GRANT与REVOKE的SQL权限管理 在数据库管理中&#xff0c;确保数据的安全性和合理的权限控制是至关重要的。SQL的GRANT和REVOKE语句提供了一种强大的机制来精确地控制用户对数据库对象的访问权限。本文将深入探讨如何使用GRANT和REVOKE语…