xss-lab靶场基础详解第1~3关

第一关

我去,还是得多学基础啊

http://127.0.0.1/xss-labs/level1.php?name=<u>a</u>

这个看他的网站源码,可以看到他没有过滤,没有被编码

然后在name=<script>alert(1)</script>,就算过关了

第二关

这个是查看前端的源代码,可以看出来被实体化编码了,这个应该是前端编码的

前端点属性也能看到他是否实体化编码,

经过尝试,他直接将尖括号给实体化编码了,好像本来就是啊,有点废话了......

 看了答案才知道他有两个输出,就是说我输入了一个,他返回了两个,第一个是被实体化了,但是第二个没有被实体化,但是被双引号括起来的,就是当做文本处理了,

为什么会有两个输出,只需要看浏览器页面就能够发现

思路:闭合双引号,重新写标签

但是有一点我非常疑惑的,到现在还是没有搞清楚,如果今天把这个搞清楚就下播

就是说我直接闭合了双引号,他还是没有下划线

<u>a</u>标签:给a字母下划线的意思

然后我想的是,会不会是闭合单引号,但是我只是闭合了单引号,我还在input标签内,所以就不能执行<u>标签

思路:闭合单引号,还要闭合标签,最后在自己输入<script>alert(1)</script>标签,就好了

所以最后答案是"><script>alert(1)</script>

第三关

也是想第二关一样的界面,我以为是和第二关一样的,其实不然

好像将双引号实体化编码了,我直接愣住了

这里我顶不住了,看答案发现,审查元素看字符是否被实体化有点不规范,而且也不能具体知道是用什么单引号,或者双引号括起来的,具体我也不知道为啥,

所以,之后建议直接审查网页源代码,也就是如下

例如,我输入的是"><script>alert(1)</script>,审查源代码的情况如下

这发现,他的闭合方式是单引号,而不是前端审查元素那个双引号!!!!这里是将双引号实体化编码成&quot;,然后单引号是不会被实体化的,我是看答案知道的,

继续闭合单引号,然后仔细的发现就是,单引号未被实体化,

<>尖括号被实体化了

意味着:标签不能用了,因为标签要有尖括号,但是标签里面的事件不需要尖括号啊(寻找<input>标签的其他事件)

继续测试,ok啊,还是大意了,虽然onfocus没有尖括号,但是有双引号,双引号也被实体化编码了,

 ' οnfοcus="alert('xss');"         这个不行,因为双引号被转义了,五个单引号也无法正确的进行匹配                                                的,单引号应该成对进行匹配,我是这么理解的,错了帮忙指正
' οnfοcus=alert('xss');         这个也不行,我也不知道为啥,应该是单引号匹配问题

这里我看答案还有很多知识盲区,那就是

答案一

' οnfοcus='alert(xss);

' οnfοcus='alert(xss)    //有无分号均可,ai说的

理解(从网页源码理解)

关键源码如下:

<input name=keyword value=' ' onlick=&quot;alert('xss');&quot;'>

我直接将答案复制到源码里,便于理解

<input name=keyword value=' ' onlick='alert(xss)'>

去掉部分,便于观看,这就是完整的攻击代码

<input  value=' ' onlick='alert(xss)'>

答案二

' οnfοcus=javascript:alert() '

一样的我直接拼接到源代码里面去

<input name=keyword value=' ' οnfοcus=javascript:alert() ' '>

仔细思考他的原理是什么,看了答案大概知道了

先看onfocus事件的整个处理流程

onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

myfunction()函数可以替换成alert(1),这个就是执行alert(1),直接弹窗1,

也可以替换成javascript:alert(1),他的意思就是执行javascript:alert(1),也就是说用javascript来执行alert(1),也就是用js来执行alert(1)

区别:

<input name=keyword value=' ' οnfοcus=javascript:alert() ' '>

          onfocus的语法规则,点击输入框会执行myfunction函数,也就是执行javascript:alert(1),

          而javascript又使用伪协议(js语言)执行alert(1),也就是用js语言处理alert(1)
<input name=keyword value=' ' οnfοcus='alert(1) '>

        属于input的语法规则,直接执行alert(1)

两者都差不多,换个形式而已

拓展思考

思考一:

<input value=' ' οnfοcus='alert(xss)'>       //这是错误的xss语句,因为xss没加双引号,但是我还是               用这个通关了,我加了双引号,但是按理来说,他将双引号实体化编码之后,应该不识别               双引号才对啊,

<input  value=' ' onlick='alert(xss)'>      //正确的xss语句,xss里面不需要加双引号,就可以执行

ok,我懂了,

字符必须要加双引号,然后数字可以不加双引号,和onfocus和onclick无关

onclick和onfocus区别不大

思考二:

为啥javascript:alert(1),不加单引号,而οnfοcus='alert(1)'加了单引号,?

οnfοcus='alert(1)' 中的引号解释

        可以不加引号,也就是onfocus后面的内容(属性值)有+-号,需要加引号,以免浏览器不识别,

javascript:alert(1)

        这里为啥不加引号,看了a我的理解是不符合html规范,ai建议加引号 javascript:"alert(1)"

        

思考三:

单引号的区别,οnfοcus="alert('xss')"  ?

这里的单双引号的用途都是一样的,也就是为了区分属性值和字符串常量的,也就是单双引号可以互换,这样也行οnfοcus='alert("xss")',

但是不能两个双引号一起写,这样浏览器会选择就近闭合,引发错误,如:οnfοcus='alert('xss')'

里面的字符换成数字的话,里面的双/单引号可以省略,如:οnfοcus='alert(1)'

其实外面的也可以省略的,也可以执行,但是少了代码的健壮性,所以最好加上单引号而已

如:οnfοcus=alert(1),也能执行

但是里面如果是字符或者字符串,里面就必须加引号,不然程序运行不了,因为这不符合语法规则

如:<input οnfοcus=alert(xss)>,执行错误

参考文章:

xss-labs靶场实战全通关详细过程(xss靶场详解)-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】聚合查询 和 分组查询

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f334; 一、聚合查询 &#x1f332;1.概念 &#x1f332;2.聚合查询函数 COUNT&#xff08;&#xff09; SUM&#xff08;&#xff09; AVG&#xff08;&…

计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。

建议在电脑上看&#xff0c;手机上格式有点问题&#xff0c;认真读&#xff0c;这方面没问题的&#xff0c;肝了一天。 目录.计算机启动详解 一.计算机启动直观图二.步骤详解前置准备磁盘初始化1.开机阶段2.执行BIOS阶段3.执行引导记录&#xff08;MBR&#xff09;阶段4.操作系…

后端开发技术之Log日志框架

第一章 日志原理 1.1 log发展历史 从JDK1.4开始提供java.until.logging&#xff0c;后来大佬发现JUL太难用了&#xff0c;就自己手撸了个log4j&#xff0c;后来log4j发现安全漏洞&#xff0c;加上代码结构问题难以维护&#xff0c;于是从1.2就停止更新log4j&#xff0c;并又重…

美丽天天秒链动2+1源码(新零售商城搭建)

什么是链动21模式&#xff1f; 链动21主要是建立团队模式&#xff0c;同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规&#xff0c;同时激励用户 公司的利润分享机制&#xff0c;让您在享受购物折扣的同时&#xff0c;也能促进并获得客观收益。 链动21模…

Python10天冲刺-设计模型之策略模式

策略模式是一种行为设计模式&#xff0c;它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起&#xff0c;并让它们相互替换。 下面是使用 Python 实现策略模式的一个示例&#xff1a; 示例代码 假设我们有一个简单的购物车系统&#xf…

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url&#xff1a; http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss&#xff0c;所以对传参进行测试&#xff0c;修改?username1&#xff0c;进行访问 会发现username参数传入什么&#xff0c;welcome之后就…

自主机器人模拟系统

一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统&#xff0c;具备以下核心功能&#xff1a; 双模式控制&#xff1a;支持手动控制&#xff08;WASD键&#xff09;和自动导航模式&#xff08;鼠标左键设定目标&#xff09; 智能路径规划&#xff1a;采用改进型…

快速上手非关系型数据库-MongoDB

简介 MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;由 MongoDB Inc. 开发。 NoSQL&#xff0c;指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写&#xff0c;是对不同于传统的关系型数据库的数据库管理系统的统称。 MongoDB 的设计理念是为了应对大数据量、…

性能优化实践:启动优化方案

性能优化实践&#xff1a;启动优化方案 在Flutter应用开发中&#xff0c;启动性能是用户体验的第一印象&#xff0c;也是应用性能优化的重要环节。本文将从理论到实践&#xff0c;深入探讨Flutter应用的启动优化方案。 一、Flutter应用启动流程分析 1. 启动类型 冷启动&…

在文本废墟中打捞月光

在文本废墟中打捞月光 ----再读三三的《山顶上是海》之“暗室”所理 今天是2025年5月1日&#xff0c;传统的“五一”小长假。当我早饭后“坐”在卫生间的那几分钟里&#xff0c;闺女和儿子就骑着家中仅有的两辆电动车去了图书馆。我是该做些什么&#xff1f; 于是我左手拿着三…

C++之类和对象基础

⾯向对象三⼤特性&#xff1a;封装、继承、多态 类和对象 一.类的定义1. 类的定义格式2.类域 二.实例化1.对象2.对象的大小 三.this指针 在 C 的世界里&#xff0c;类和对象构成了面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…

计算机网络——HTTP/IP 协议通俗入门详解

HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议&#xff1f;1. 基本定义2. HTTP 是怎么工作的&#xff1f; 二、HTTP 协议的特点三、HTTPS 是什么&#xff1f;它和 HTTP 有啥区别&#xff1f;1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解&#xff1a; 五、常见…

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 &#xff08;一&#xff09;任务调度的目标 &#xff08;二&#xff09;任务调度框架的关键组成 二、任务状态设计 &#xff08;一&#xff09;任务状态流转设计 &#xff08;二&#xff09;任务表设计&#xff08;SQL&#xff09; 三、单机任…

基于GPT 模板开发智能写作辅助应用

目录 项目说明 1. 项目背景 2. 项目目标 3. 功能需求 4. 技术选型 项目结构 详细代码实现 前端代码(client) client/src/main.js client/src/App.vue client/src/components/HistoryList.vue 后端代码(server) server/app.js server/routes/api.js server/mo…

linux 使用nginx部署next.js项目,并使用pm2守护进程

前言 本文基于&#xff1a;操作系统 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服务器基础环境&#xff1a; node - 请查看 linux安装node并全局可用pm2 - 请查看 linux安装pm2并全局可用nginx - 请查看 linux 使用nginx部署vue、react项目 所需服务器基础环境&…

使用huggingface_hub需要注意的事项

在安装huggingface_hub的时候要注意如果你的python是放在c盘下时记得用管理员模式命令行来安装huggingface_hub&#xff0c;否则安装过程会报错&#xff0c;之后也不会有huggingface-cli命令。 如果安装时因为没有用管理员权限安装而报错了&#xff0c;可以先卸载huggingface-…

Spring MVC @RequestHeader 注解怎么用?

我们来详细解释一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于将 HTTP 请求中的**请求头&#xff08;Request Headers&#xff09;**的值绑定到 Controller 方法的参数上。 请求头是 HTTP 请求的一部分&#xff0c;包含了关于…

Rust 学习笔记:关于结构体的例题

Rust 学习笔记&#xff1a;关于结构体的例题 Rust 学习笔记&#xff1a;关于结构体的例题下面的程序能通过编译吗&#xff1f;下面的程序能通过编译吗&#xff1f;下面的程序能通过编译吗&#xff1f;哪种说法最能描述 Display 和 Debug 特质之间的区别&#xff1f;下面哪个选项…

STM32 SPI通信协议

1. SPI协议概述 1.1 什么是SPI&#xff1f; SPI&#xff08;Serial Peripheral Interface&#xff09;是由摩托罗拉公司于1980年代提出的同步串行通信协议&#xff0c;主要用于短距离高速芯片间通信。作为四线制全双工通信协议&#xff0c;它以简单的硬件实现和高效的传输速率…

92.一个简单的输入与显示示例 Maui例子 C#例子

一、关于项目命名的注意事项 在开发.NET MAUI项目时&#xff0c;项目命名是一个不可忽视的细节。如果你习惯了在C#控制台或WPF项目中使用中文项目名称&#xff0c;那么在.NET MAUI中&#xff0c;你可能会遇到一些问题。我之前就因为使用中文项目名称而导致项目无法直接运行&am…