iwebsec靶场 XSS漏洞通关笔记
目录
前言
1.反射性XSS
2.存储型XSS
3.DOM型XSS
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
3.渗透
第02关 存储型XSS漏洞
1.打开靶场
2.源码分析
4.渗透
方法1:
方法2
方法3
第03关 DOM XSS漏洞
1.打开靶场
2.源码分析
3.渗透分析
3.渗透过程
(1)渗透方法1
(2)渗透方法2
(3)渗透方法3
第04关 XSS修复示例
1.打开靶场
2.源码分析
3.渗透实战
前言
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS
反射型XXS是一种非持久性的攻击,它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的目的。
2.存储型XSS
存储型XSS又名持久型XSS,攻击的恶意代码会被存储在数据库、文件系统等存储介质,因为是永久存储所以功效持久。通常来讲攻击者可以把payload放在网站留言板、评论等位置,等用户访问网站并有匹配payload的行为时,即可触发攻击。
3.DOM型XSS
DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析,可以认为完全是客户端的事情,无法通过WAF防护。
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
如下所示,未对传入参数name进行任何过滤,存在xss漏洞
<?php require_once '../header.php'; ?>
<html><head><title>反射型XSS漏洞</title></head><h2>反射型XSS漏洞</h2><div class="alert alert-success"><p>/01.php?name=iwebsec </p></div><body><table class='table table-striped'><?phpif(isset($_GET['name'])){$name=$_GET['name'];echo "<h2>"."Hello ".$name."<h2>";}else{exit();}
?>
</table>
很明显,这是一个反射型的XSS漏洞
3.渗透
传入参数<script>alert('ljn')</script>
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/01.php?name=渗透成功,效果如下所示
第02关 存储型XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/02.php如下所示,这是一个留言板相关内容的网页
2.源码分析
如下所示对传入的参数name并未做任何过滤,具备XSS漏洞。
<?phprequire_once('../header.php');require_once('../sqli/db.php');?>
<html><head><title>存储型XSS漏洞</title></head><h2>存储型XSS漏洞</h2><div class="alert alert-success"><p>请输入你的留言信息</p></div><form method="get"><input type="text" name="name">
<input type="submit" value="submit">
</form><body><?phpif(isset($_GET['name'])){$name=$_GET['name'];$sql="INSERT INTO xss set name='$name'";$result=mysql_query($sql);$sql="SELECT * FROM xss";$result=mysql_query($sql);}else{exit();}if ($result) {?><table class='table table-striped'><tr><th>id</th><th>name</th></tr><?phpwhile ($row = mysql_fetch_assoc($result)) {echo "<tr>";echo "<td>".$row['id']."</td>";echo "<td>".$row['name']."</td>";echo "</tr>";} echo "</table>";}else {print_r(mysql_error());}?>
同时对参数name使用SQL语句进行insert存储,关键源码如下
$sql="INSERT INTO xss set name='$name'";$result=mysql_query($sql);
接下来再使用select查询语句将其展示出来,关键源码如下
$sql="SELECT * FROM xss";$result=mysql_query($sql);
很明显这是具有存储型XSS漏洞,注入的XSS命令会永久存储到服务器,从而触发XSS漏洞。
4.渗透
方法1:
这里要注意的是,因为涉及到SQL语句,第一个SQL插入源码如下所示,闭合方式为单引号。
$sql="INSERT INTO xss set name='$name'";
故而name的赋值不可以有单引号,故而如果想输出ljn,那么参数不能是<script>alert('ljn')</script>这是因为包含了单引号
<script>alert(/xss/)</script>
如下所示
渗透结果如下所示
方法2
因为使用SQL语句单引号闭合,故而可以选择使用双引号来进行渗透
<script>alert("hello ljn")</script>
在留言处输入参数后如下所示
如下所示,渗透成功
方法3
<script>alert(20221128)</script>
如下所示渗透成功
第03关 DOM XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/03.php
2.源码分析
如下代码中存在domxss函数,可能存在dom型xss漏洞
<?php require_once '../header.php'; ?>
<html><head><title>DOM XSS漏洞</title></head><h2>DOM XSS漏洞</h2><div class="alert alert-success"><p>请输入内容 </p></div><body><table class='table table-striped'><script>
function domxss()
{var str = document.getElementById("input").value;document.getElementById("output").innerHTML = str;
}
</script><h2 id = "output"></h2><input type="text" id="input" value="" />
<input type="button" value="submit" onclick="domxss()" />
</table>
3.渗透分析
输入参数,判断是否有过滤信息
'"<>?%66666ljn
在当前页面元素,搜索框中输入关键字搜索ljn,寻找刚刚输入的内容,很明显所有字符都还在,并不存在过滤单引号和双引号等特殊字符, 并将输入内容显示到页面中。
接下来分析一下闭合关系,查看器中的内容如下,于是可以输入完整的xss语句,通过将内容输出到页面,再出发显示到页面的内容执行xss脚本。
<h2 id="output">'"<>?%66666ljn</h2>
3.渗透过程
(1)渗透方法1
基于此可以构造闭合,参数输入xss恶意脚本(点击ljn后输出你好)
<li/onclick=alert('你好')>ljn</li>
输入后提交如下所示
在页面的ljn处点击鼠标,则弹出你好,渗透成功
(2)渗透方法2
参数为xss恶意脚本(因图标执行错误而出发弹框输出ljn)
<img src=1 onerror=alert('ljn')>
如下所示,渗透成功
(3)渗透方法3
参数为xss恶意脚本(鼠标移动到图标后输出ljn)
<img src="#" onmouseover="alert('ljn')">
提交后如下图所示
当鼠标移动到图标处时,弹出弹框,渗透成功
第04关 XSS修复示例
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/xss/04.php
2.源码分析
如下所示对参数使用了htmlspecialchars函数过滤,这样就可以防范恶意的xss攻击
<?php require_once '../header.php'; ?>
<html><head><title>XSS修复示例</title></head><h2>XSS修复示例</h2><div class="alert alert-success"><p>/04.php?name=iwebsec </p></div><body><table class='table table-striped'><?phpif(isset($_GET['name'])){$name=$_GET['name'];echo "<h2>"."Hello ".htmlspecialchars($name)."<h2>";}else{exit();}
?>
</table>
3.渗透实战
再次尝试第01关渗透成功的内容
<script>alert('ljn')</script>
如下所示,渗透失败,说明xss漏洞修复成功
相关文章:
iwebsec靶场 XSS漏洞通关笔记
目录 前言 1.反射性XSS 2.存储型XSS 3.DOM型XSS 第01关 反射型XSS漏洞 1.打开靶场 2.源码分析 3.渗透 第02关 存储型XSS漏洞 1.打开靶场 2.源码分析 4.渗透 方法1: 方法2 方法3 第03关 DOM XSS漏洞 1.打开靶场 2.源码分析 3.渗透分析 3.渗透过程…...
设计模式-单例模型(单件模式、Singleton)
单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 单例模式同时解决了两个问题, 所以违反了单一职责原则: 保证一个类只有一个实例。 为什么会有人想要控制一个类所拥有的实例…...
笔记本双系统win10+Ubuntu 20.04 无法调节亮度亲测解决
sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get update sudo apt-get install brightness-controller-simple 安装好后找到一个太阳的图标,就是这个软件,打开后调整brightness,就可以调整亮度,可…...
零基础Java第十一期:类和对象(二)
目录 一、对象的构造及初始化 1.1. 就地初始化 1.2. 默认初始化 1.3. 构造方法 二、封装 2.1. 封装的概念 2.2. 访问限定符 2.3. 封装扩展之包 三、static成员 3.1. 再谈学生类 3.2. static修饰成员变量 一、对象的构造及初始化 1.1. 就地初始化 在声明成员变…...
NumPy包(下) python笔记扩展
9.迭代数组 nditer 是 NumPy 中的一个强大的迭代器对象,用于高效地遍历多维数组。nditer 提供了多种选项和控制参数,使得数组的迭代更加灵活和高效。 控制参数 nditer 提供了多种控制参数,用于控制迭代的行为。 1.order 参数 order 参数…...
极狐GitLab 17.5 发布 20+ 与 DevSecOps 相关的功能【一】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
Oracle 第1章:Oracle数据库概述
在讨论Oracle数据库的入门与管理时,我们可以从以下几个方面来展开第一章的内容:“Oracle数据库概述”,包括数据库的历史与发展,Oracle数据库的特点与优势。 数据库的历史与发展 数据库技术的发展可以追溯到上世纪50年代…...
7、Nodes.js包管理工具
四、包管理工具 4.1 npm(Node Package Manager) Node.js官方内置的包管理工具。 命令行下打以下命令: npm -v如果返回版本号,则说明npm可以正常使用 4.1.1npm初始化 #在包所在目录下执行以下命令 npm init #正常初始化,手动…...
网络地址转换——NAT技术详解
网络地址转换——NAT技术详解 一、引言 随着互联网的飞速发展,IP地址资源日益紧张。为了解决IP地址资源短缺的问题,NAT(Network Address Translation,网络地址转换)技术应运而生。NAT技术允许一个私有IP地址的网络通…...
问:数据库存储过程优化实践~
存储过程优化是提高数据库性能的关键环节。通过精炼SQL语句、合理利用数据库特性、优化事务管理和错误处理,可以显著提升存储过程的执行效率和稳定性。以下是对存储过程优化实践点的阐述,结合具体示例,帮助大家更好地理解和实施这些优化策略。…...
C++ vector的使用(一)
vector vector类似于数组 遍历 这里的遍历跟string那里的遍历是一样的 1.auto(范围for) 2.迭代器遍历 3.operator void vector_test1() {vector<int> v;vector<int> v1(10, 1);//初始化10个都是1的变量vector<int> v3(v1.begin(), --…...
深入浅出:ProcessPoolExecutor 处理异步生成器函数
深入浅出:ProcessPoolExecutor 处理异步生成器函数 什么是 ProcessPoolExecutor?为什么要使用 ProcessPoolExecutor 处理异步生成器函数?ProcessPoolExecutor 处理异步生成器函数的基本用法1. 导入模块2. 定义异步生成器函数3. 定义处理函数4…...
elementUI表达自定义校验,校验在v-for中
注意:本帖为公开技术贴,不得用做任何商业用途 <el-form :inline"true" :rules"rules" :model"formData" ref"formRef" class"mt-[20px]"><el-form-item label"选择区域" prop&qu…...
Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范
1. 在 CentOS 上安装和配置 Elasticsearch 在 CentOS 系统下,安装 Elasticsearch 主要分为以下步骤: 1.1 准备工作 在开始安装之前,确保你的系统满足以下基本条件: CentOS 版本要求:推荐使用 CentOS 7 及以上版本。…...
短信验证码发送实现(详细教程)
短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦!最近也是在工作中遇到我自认为需要记录笔记的需求,本人只求日后回顾有迹可寻,不喜勿喷! 废话不多说,直接上代码ÿ…...
P450催化的联芳基偶联反应-文献精读72
Chemoenzymatic Synthesis of Fluorinated Mycocyclosin Enabled by the Engineered Cytochrome P450-Catalyzed Biaryl Coupling Reaction 经工程化的细胞色素P450催化的联芳基偶联反应实现氟代麦环素的化学酶促合成 摘要 将氟原子引入天然产物有望生成具有改良或新颖药理特…...
在不支持AVX的linux上使用PaddleOCR
背景 公司的虚拟机CPU居然不支持avx, 默认的paddlepaddle的cpu版本又需要有支持avx才行,还想用PaddleOCR有啥办法呢? 是否支持avx lscpu | grep avx 支持avx的话,会显示相关信息 如果不支持的话,python运行时导入paddle会报错 怎么办呢 方案一 找公司it,看看虚拟机为什么…...
Python数据分析——Numpy
纯个人python的一个小回忆笔记,当时假期花两天学的python,确实时隔几个月快忘光了,为了应付作业才回忆起来,不涉及太多基础,适用于有一定编程基础的参考回忆。 这一篇笔记来源于下面哔哩哔哩up主的视频: 一…...
JMeter快速入门示例
JMeter是一款开源的性能测试工具,常用于对Web服务和接口进行性能测试。 下载安装 官方下载网址: https://jmeter.apache.org/download_jmeter.cgi也可以到如下地址下载:https://download.csdn.net/download/oscar999/89910834 这里下载Wi…...
【333基于Java Web的考编论坛网站的设计与实现
毕 业 设 计(论 文) 考编论坛网站设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计…...
计算机网络关键名词中英对照
物理层 IMP - Interface Message Processor - 接口信息处理机 MODEM - Modulator-Demodulator - 调制解调器 LAN - Local Area Network - 局域网 FDM - Frequency Division Multiplexing - 频分复用 TDM - Time Division Multiplexing - 时分复用 STDM - Statistical Time…...
二叉树的学习
除了根节点外的其他节点只有一个直接前驱,有多个直接前驱的逻辑结构叫做图 任何一个树都可以看成是一个根节点和若干个不相交的子树构成的; 构建思维导图时使用树形结构 题目中给出AB是堂兄弟节点说明他们处在同一层 描述两节点之间的路径是从上到下的,同层没有路径,一条边记录…...
免费开源的医疗信息提取系统:提升超声波影像的诊断价值
一、系统概述 思通数科推出的医疗信息精准抽取系统,致力于解决当前医疗行业面临的信息碎片化和数据管理难题。传统医疗过程中,超声波影像数据与诊断报告之间的脱节,往往导致信息无法有效整合,影响医生的诊断效率与准确性。我们的…...
Bash 中的 ${} 和 $() 有什么区别 ?
Bash (Bourne-Again SHell) 是一种流行的 Unix SHell,用于编写脚本。如果您使用 Bash 脚本,那么了解不同的语法元素对于提高脚本的效率和避免错误是很重要的。 在本文中,我们将解释 Bash 中 ${} 和 $() 语法之间的区别,并向您展示…...
SPSS、R语言因子分析FA、主成分分析PCA对居民消费结构数据可视化分析
全文链接:https://tecdat.cn/?p37952 分析师:Ting Mei 在经济发展的大背景下,居民消费结构至关重要。本文围绕居民消费结构展开深入研究,运用 SPSS25.0 和 R 语言,以因子分析法和主成分分析法对东北三省居民消费价格指…...
高级SQL技巧掌握
高级SQL技巧掌握 在数据驱动的时代,掌握SQL不仅仅是为了解决具体问题,它更像是一把钥匙,帮助你打开数据分析的大门。你准备好提升你的SQL技能了吗?在这篇文章中,我们将一起探索十个必备的高级SQL查询技巧,这些技巧将帮助你更有效率地进行数据处理与分析。 1. 常见表表达…...
数组实例之三子棋的实现(C语言)
目录 前言 一、三子棋实现的逻辑 二、三子棋的实现 2.1文件的创建添加 2.2 test文件基本逻辑 2.2.1菜单的实现 2.2.2菜单的选择 2.2.3game函数棋盘的实现 2.3game.c文件的编写 2.3.1初始化函数的模块 2.3.2棋盘打印的模块 2.3.3实现棋盘界面的打印 2.3.4实现玩家下…...
【Linux驱动开发】设备树节点驱动开发入门
【Linux驱动开发】设备树节点驱动开发入门 文章目录 设备树文件设备树文件驱动开发附录:嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射,虚拟内存和硬件内存地址字符驱动旧字符驱动新字…...
C++——string的模拟实现(下)
目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接:C——…...
面试 Java 基础八股文十问十答第二十九期
面试 Java 基础八股文十问十答第二十九期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)类加载过程 类加载…...
v2ray wordpress/哪里有永久免费建站
文章目录(1)什么是等待activity出现(2)wait_activity()方法(3)获取当前页面的activity方法(4)综合练习(1)什么是等待activity出现 在启动app的时候ÿ…...
域名注册和网站建设/百度首页纯净版怎么设置
Polldaddy 是全球领先的在线投票系统服务商,目前每月访问量达到2亿,多数是通过从外部网站调用其饰件(widget)或其 API 进行的。今天 Polldaddy 正式公布其投票系统 API,第三方开发商可以直接使用该 API 在自己的程序中…...
网站建设方案模板高校/东莞今日头条最新消息
09 Eclipse设置代码注释模版背景博客正文背景 在团队协作开发的项目中,为了降低沟通和维护成本,项目组成员使用统一的编码规范和注释规范显得尤为重要。本文就说一说如果在Eclipse中设置代码注释模版,技术经理可以要求所有的开发人员设置为统…...
国外大型网站/拉新平台
Windows下C多线程编程(入门实例) 2019-01-21 13:18:20 shikong_ 阅读数 267更多 分类专栏: C 多线程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多线程的问题,对多线程的理解程度从一个侧面…...
八方资源网做网站优化怎么样/市场营销十大经典案例
相信小伙伴们都学过斐波那契数列,它是这样的一个数列:1,1,2,3,5,8,13,21\cdots1,1,2,3,5,8,13,21⋯。 用 f_nfn 表示斐波那契数列的第 nn 项,则有:f_1 f_2 1f1f21,f_n f_{n-1} f_{n-2} (n>2)fnfn−1f…...
如何给网站添加音乐/seo技术分享博客
对一个dynamic工程,一般都是手动添加服务器,然后进行开发。有时候也可以利用eclipse的tomcat插件,使用起来还是挺方便的,只是配置的时候需要注意一些项目的配置,否则tomcat插件找不见运行时需要的classes文件等&#x…...