当前位置: 首页 > news >正文

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 靶场漏洞库iwebsecicon-default.png?t=O83Ahttp://iwebsec.com:81/xss/01.php?name=渗透成功,效果如下所示

第02关 存储型XSS漏洞

1.打开靶场

iwebsec 靶场漏洞库iwebsecicon-default.png?t=O83Ahttp://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 靶场漏洞库iwebsecicon-default.png?t=O83Ahttp://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">'"&lt;&gt;?%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 靶场漏洞库iwebsecicon-default.png?t=O83Ahttp://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&#xff1a; 方法2 方法3 第03关 DOM XSS漏洞 1.打开靶场 2.源码分析 3.渗透分析 3.渗透过程…...

设计模式-单例模型(单件模式、Singleton)

单例模式是一种创建型设计模式&#xff0c; 让你能够保证一个类只有一个实例&#xff0c; 并提供一个访问该实例的全局节点。 单例模式同时解决了两个问题&#xff0c; 所以违反了单一职责原则&#xff1a; 保证一个类只有一个实例。 为什么会有人想要控制一个类所拥有的实例…...

笔记本双系统win10+Ubuntu 20.04 无法调节亮度亲测解决

sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get update sudo apt-get install brightness-controller-simple 安装好后找到一个太阳的图标&#xff0c;就是这个软件&#xff0c;打开后调整brightness&#xff0c;就可以调整亮度&#xff0c;可…...

零基础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 中的一个强大的迭代器对象&#xff0c;用于高效地遍历多维数组。nditer 提供了多种选项和控制参数&#xff0c;使得数组的迭代更加灵活和高效。 控制参数 nditer 提供了多种控制参数&#xff0c;用于控制迭代的行为。 1.order 参数 order 参数…...

极狐GitLab 17.5 发布 20+ 与 DevSecOps 相关的功能【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

Oracle 第1章:Oracle数据库概述

在讨论Oracle数据库的入门与管理时&#xff0c;我们可以从以下几个方面来展开第一章的内容&#xff1a;“Oracle数据库概述”&#xff0c;包括数据库的历史与发展&#xff0c;Oracle数据库的特点与优势。 数据库的历史与发展 数据库技术的发展可以追溯到上世纪50年代&#xf…...

7、Nodes.js包管理工具

四、包管理工具 4.1 npm(Node Package Manager) Node.js官方内置的包管理工具。 命令行下打以下命令&#xff1a; npm -v如果返回版本号&#xff0c;则说明npm可以正常使用 4.1.1npm初始化 #在包所在目录下执行以下命令 npm init #正常初始化&#xff0c;手动…...

网络地址转换——NAT技术详解

网络地址转换——NAT技术详解 一、引言 随着互联网的飞速发展&#xff0c;IP地址资源日益紧张。为了解决IP地址资源短缺的问题&#xff0c;NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;技术应运而生。NAT技术允许一个私有IP地址的网络通…...

问:数据库存储过程优化实践~

存储过程优化是提高数据库性能的关键环节。通过精炼SQL语句、合理利用数据库特性、优化事务管理和错误处理&#xff0c;可以显著提升存储过程的执行效率和稳定性。以下是对存储过程优化实践点的阐述&#xff0c;结合具体示例&#xff0c;帮助大家更好地理解和实施这些优化策略。…...

C++ vector的使用(一)

vector vector类似于数组 遍历 这里的遍历跟string那里的遍历是一样的 1.auto&#xff08;范围for&#xff09; 2.迭代器遍历 3.operator void vector_test1() {vector<int> v;vector<int> v1(10, 1);//初始化10个都是1的变量vector<int> v3(v1.begin(), --…...

深入浅出:ProcessPoolExecutor 处理异步生成器函数

深入浅出&#xff1a;ProcessPoolExecutor 处理异步生成器函数 什么是 ProcessPoolExecutor&#xff1f;为什么要使用 ProcessPoolExecutor 处理异步生成器函数&#xff1f;ProcessPoolExecutor 处理异步生成器函数的基本用法1. 导入模块2. 定义异步生成器函数3. 定义处理函数4…...

elementUI表达自定义校验,校验在v-for中

注意&#xff1a;本帖为公开技术贴&#xff0c;不得用做任何商业用途 <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 系统下&#xff0c;安装 Elasticsearch 主要分为以下步骤&#xff1a; 1.1 准备工作 在开始安装之前&#xff0c;确保你的系统满足以下基本条件&#xff1a; CentOS 版本要求&#xff1a;推荐使用 CentOS 7 及以上版本。…...

短信验证码发送实现(详细教程)

短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦&#xff01;最近也是在工作中遇到我自认为需要记录笔记的需求&#xff0c;本人只求日后回顾有迹可寻&#xff0c;不喜勿喷&#xff01; 废话不多说&#xff0c;直接上代码&#xff…...

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的一个小回忆笔记&#xff0c;当时假期花两天学的python&#xff0c;确实时隔几个月快忘光了&#xff0c;为了应付作业才回忆起来&#xff0c;不涉及太多基础&#xff0c;适用于有一定编程基础的参考回忆。 这一篇笔记来源于下面哔哩哔哩up主的视频&#xff1a; 一…...

JMeter快速入门示例

JMeter是一款开源的性能测试工具&#xff0c;常用于对Web服务和接口进行性能测试。 下载安装 官方下载网址&#xff1a; https://jmeter.apache.org/download_jmeter.cgi也可以到如下地址下载&#xff1a;https://download.csdn.net/download/oscar999/89910834 这里下载Wi…...

【333基于Java Web的考编论坛网站的设计与实现

毕 业 设 计&#xff08;论 文&#xff09; 考编论坛网站设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...