XSS之xss-labs-level11

2023-11-18

0x01 XSS-Labs

  XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
  XSS按照利用方式主要分为:反射型XSS、存储型XSS、DOM型XSS。反射型XSS是攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS即存储型XSS,非常危险,容易造成蠕虫,大量盗窃cookie。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞

  XSS-Labs是使用PHP编写的一个XSS漏洞练习平台,一共包含20关,其主要为反射型XSS,可以练习基础XSS的过滤和绕过技巧,且每一关的后台源码都重写了alert()方法,只要成功弹框即可调用重写的alert()方法进入下一关或完成本关测试。

0x02 实验工具

  • FireFox
  • HackBar

0x03 实验环境

  • 服务器:Windows Server 2008
  • 中间件:Apache
  • 客户端:Windows 10

实验界面如下图所示:

实验界面

0x04 实验步骤

  1. 使用如下payload进行测试,查看参数的回显位置以及是否被转义或过滤。

    http://10.10.10.148:8203/level11.php?keyword=<script>alert(/onclink+src+data+href/)</script>
    http://10.10.10.148:8203/level11.php?t_sort=<script>alert(/onclink+src+data+href/)</script>
    referer:
    "type="text" οnclick="alert(1)"
    
    注入点检测

    由上述操作可以推断,程序对h2name=t_sortinput标签中参数的尖括号进行了转义,而对name=t_refinput标签参数中的尖括号进行过滤,使用不含尖括号的语句可以正常弹框,所以此处存在XSS漏洞。

  2. 构造如下所示的payload进行漏洞测试,结果如下图所示。

    http://10.10.10.148:8203/level11.php?keyword=good%20job!
    referer:
    click me!" type="button" οnclick="alert(1)
    "type="text" οnclick="alert(1)"
    
    注入成功
  3. 代码审计。程序源码如下所示:

    <!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="level12.php?keyword=good job!"; 
    }
    </script>
    <title>欢迎来到level11</title>
    </head>
    <body>
    <h1 align=center>欢迎来到level11</h1>
    <?php 
    ini_set("display_errors", 0);
    $str = $_GET["keyword"];
    $str00 = $_GET["t_sort"];
    $str11=$_SERVER['HTTP_REFERER'];
    $str22=str_replace(">","",$str11);
    $str33=str_replace("<","",$str22);
    echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
    <form id=search>
    <input name="t_link"  value="'.'" type="hidden">
    <input name="t_history"  value="'.'" type="hidden">
    <input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
    <input name="t_ref"  value="'.$str33.'" type="hidden">
    </form>
    </center>';
    ?>
    <center><img src=level11.png></center>
    <?php 
    echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
    ?>
    </body>
    </html>
    
    • 由22、26行代码可知:GET方法得到的参数经过htmlspecialchars()函数转义后回显到HTML页面中。
    • 由19-21、27行代码可知:程序将通过GET方法得到的参数中的尖括号进行过滤后赋值给name=t_refa标签的value值。
  4. 所以含有的尖括号的注入无效,但其他不含尖括号构成的XSS仍可以使用。

0x05 实验分析

  • 程序未做任何转义或过滤就将参数回显到HTML页面中,所以此关的payload非常多:

    click me!" type="button" οnclick="alert(1)
    "type="text" οnclick="alert(1)"
    ...
    

0x06 参考链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSS之xss-labs-level11 的相关文章

  • 浅谈逻辑漏洞中的越权访问漏洞

    越权漏洞 越权访问漏洞示意图 一 越权访问漏洞简介 1 类型 水平越权 通过更换的某个ID之类的身份标识 从而使A账号获得 增删查改 B账号的数据 垂直越权 使用低权限身份的账号 发送高权限账号的请求 获得其高权限的操作 未授权访问 通过删
  • Vue--ElementUI组件库

    1 概述 Element官网 ElementUI是饿了么前端团队推出的一款基于Vue桌面端UI框架 和Boostrap一样对原生的HTML标签进行了封装 美化 让我们能够专注于业务逻辑而不是UI界面 默认情况下无论我们有没有使用到某个组件

随机推荐

  • JVM类加载器的urlclassloader和appclassloader

    package kite jvm import java net URL 首先为什么 1 可以 因为OneURLClassLoader在加载Constant的时候发现需要加载 OneInterface 因为他是其接口 因为OneURLCla
  • merkle tree

    merkle tree 是用来存储hash值的一棵树 其叶子是数据块的hash值 非叶子节点是其对应子节点的串联字符串的hash hash是一个把任意长度数据映射成固定长度的函数 对于数据完整性校验 最简单的方法是对整个数据做Hash运算得
  • elasticsearch对数组进行搜索

    写在前面 我们在进行全文建搜的时候往往会添加很多前置条件 比如地区 时间 以及知识点树 我们需要在搜索之前先进行过滤在进行搜索 Array索引 es的数据类型中实际上是不包含数组类型的 在默认的情况下任何字段都可以包含0或者是更多的值 并且
  • docker配置nginx

    docker配置nginx 1 首先安装nginx镜像 docker pull nginx 安装好可以选择测试 也可以跳过 测试命令两行 docker run name nginx test p 80 80 d nginx docker s
  • OC 6702升压型恒流驱动芯片, ESOP8 封装,内置 100V 功率 MOS

    概述 OC 6702 是一款内置 100V 功率 NMOS 高效率 高精度的升压型大功率 LED 恒流驱动芯片 OC6702 采用固定关断时间的控制方 式 关断时间可通过外部电容进行调节 工作频率可根据用户要求而改变 OC6702 通过调节
  • 判断一个对象是否有空的属性值

    直接上代码 const trim str gt const newStr str 0 str str toString return newStr newStr replace s s g str 判断一个对象是否有空的属性值 const
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • Java JDK8 Stream 使用详解

    Stream 流 的 筛选 去重 截取跳过映射 合并多个流 匹配 归约 简单示例 1 什么是流 2 流的特点 3 流的操作种类 4 流的操作过程 5 使用流 1 什么是流 流是Java8引入的全新概念 它用来处理集合中的数据 暂且可以把它理
  • [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s

    背景 想导入一个别人的项目 却发现使用navicat运行数据库批次文件时出现了错误 爆出了这样的错误 Err 1064 You have an error in your SQL syntax check the manual that c
  • uniapp的tab切换自定义组件封装

    一 创建组件 在存放组件的文件夹新建一个 vue文件 二 使用子组件
  • 并不是所有的程序员都适合做技术管理

    CSDN记者 张勇 写在之前 在CSDN博客闲逛时无意间进入一个博客 博客地址 博客里的文章质量很高 文章话题主要涉及程序员素养和管理 文章有翻译也有原创 看了几篇文章之后 突然很想和这篇博名为 呦呦鹿鸣 签名则引用孟子 穷则独善其身 达则
  • js 字符串与二维数组间的转化

    1 字符串转二维数组 var a 1 2 3 4 5 a b c d e y1 y2 y3 y4 y5 var str eval a alert str 0 3 结果 4 2 二维数组转字符串 var b 1 2 a b function
  • 云原生之使用Docker部署Dashdot服务器仪表盘

    云原生之使用Docker部署Dashdot服务器仪表盘 一 Dashdot介绍 二 检查本地系统环境 1 检查本地系统版本 2 检查docker状态 3 检查docker版本 三 下载Dashdot镜像 四 部署Dashdot应用 1 创建
  • oracle存储过程----存储过程执行简单的增删改查sql

    存储过程执行简单的增删改查sql 上一篇文章 oracle存储过程 变量的介绍及使用 PL SQL 下边是一个简单的数据库表 为了方便 我都定义成了varchar 类型 1 存储过程执行增加sql 首先写一个增加的存储过程 create o
  • MQTT学习笔记——MQTT协议使用

    http mosquitto org files source mosquitto 1 4 5 tar gz 安装出错时openssl等 需要更改 cd mosquitto 1 4vi config mk可以选择去掉SSL的功能 可以参考h
  • ES相关随手记

    ES相关随手记 一 基本操作 1 es三大属性 索引 映射 文档 1 1 索引 查看 es 中所有的索引信息 GET cat indices v 创建 索引 PUT products 创建 索引 指定库信息 PUT products set
  • 记一次关于MySQL分页查询的优化方案(聚集索引与非聚集索引)

    最近在工作中 有一段逻辑需要从一张大约70W数据的表中分页查询 最开始写的SQL是 SELECT FROM table name WHERE 1 1 ORDER BY time column DESC LIMIT 600000 10 查询时
  • 编译QT5.12.12版本WebEngine模块支持H264视频播放

    qt自带的QtWebEngine模块无法播放HTML5中的mp3 mp4 需要重新编译 提供编译好的下载 环境 QT5 12 12 VS2017 Python2 一 在64位windows系统下编译32位MSVC选择VS2017如下命令 右
  • Redis的五大数据类型(一)

    1 字符串类型 string 1 添加 查询 添加数据 set key value 如果key已存在 之前的value将会被覆盖 查询指定key的值 get key 127 0 0 1 6379 gt set name zhangsan O
  • XSS之xss-labs-level11

    文章目录 0x01 XSS Labs 0x02 实验工具 0x03 实验环境 0x04 实验步骤 0x05 实验分析 0x06 参考链接 0x01 XSS Labs XSS 跨站脚本攻击 是指恶意攻击者往Web页面里插入恶意Script代码