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

【bWAPP】XSS跨站脚本攻击实战

别低头,皇冠会掉;别流泪,贱人会笑。

0x01、XSS - Reflected (GET)

Low

输入的内容直接输出到页面中:

在这里插入图片描述

后台服务端没有对输入的参数进行过滤, 构造一个注入xss payload即可:

<script>alert(1)</script>

成功弹窗

在这里插入图片描述

Medium

审查源码可以发现服务端进行了过滤, 但只是addslashes()函数而已(防sql注入), 依旧可以xss:

在这里插入图片描述

构造一个注入xss payload即可:

<script>alert(1)</script>

成功弹窗

在这里插入图片描述

High

审查源码可以发现将所有关键字转换为HTML实体, 是安全的:

在这里插入图片描述

0x02、XSS - Reflected (POST)

和GET型一样, 只是区别在于GET型的注入直接修改URL的请求即可, POST注入则需要要Post data构造传输post请求:

GET型:

http://localhost:8080/bWAPP/xss_get.php?firstname=<script>alert(1)</script>

POST型:

在这里插入图片描述

成功弹窗

在这里插入图片描述

0x03、XSS - Reflected (JSON)

思考

当查找movie:Iron Man成功时, 就会提示找到:

在这里插入图片描述

当查找movie:Iron 不成功时, 就会将输入的字符串显示在界面上:

在这里插入图片描述

这就造成了可控变量的存在

Low

构造一个注入xss payload即可:

<script>alert(1)</script>

错误信息直接爆出来了…

在这里插入图片描述

可以看出来是Json注入,

尝试注入json数据:

{"result": "<script>alert(1)</script>"}

发现不行;

在这里插入图片描述

再看报错信息, 继续尝试闭合吧:

"}]}'; <script>alert(1)</script> //

发现不行, 查看HTML源码, 发现闭合出去之后是处于script之间的:

在这里插入图片描述

知道原因之后就简单了:

"}]}'; alert(document.cookie) //

成功进行json注入

在这里插入图片描述

Medium&High

将所有关键字转换为HTML实体, 安全:

在这里插入图片描述

0x04、XSS - Reflected (AJAX/JSON)

通过尝试可以发现本页面是xss_ajax_2-1.php, 通过Ajax调用xss_ajax_2-2.php完成查询:

在这里插入图片描述

Low&Medium

有两种方法:

第一种方法:在页面内直接输入XSS的Payload即可

<img src=x onerror=alert(1)>

成功弹窗

在这里插入图片描述

在xss_ajax_2-2.php?title=页面也可以直接输入Payload

在这里插入图片描述

High

high等级利用了json的解析:

在这里插入图片描述

在输入框中注入是直接以字符串的形式输出的, 不会作为html元素或者js执行,

在这里插入图片描述

原因就在于xss_ajax_2-2.php中对输入进行了HTM实体编码:

在这里插入图片描述

0x05、XSS - Reflected (AJAX/XML)

和上一题一样, 同样通过Ajax跳转到另一个php解析,

发现是xml解析:

在这里插入图片描述

Low&Medium

payload:

<a xmlns:a='http://www.w3.org/1999/xhtml'><a:body onload='alert(1)'/></a>

xmlns是XML Namespaces的缩写,

当加载网站的时候执行alert(1)

在这里插入图片描述

Medium

源码中使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。payload仍可行

High

源码中使用了htmlspecialchars()函数来进行过滤

0x06、XSS - Reflected (Back Button)

点击Go back按钮,

在这里插入图片描述

页面会Header到上一个界面:

在这里插入图片描述

由于刚刚从上一题到这题, 点击按钮之后就返回了上一个页面

Low

分析源码, 看到是利用了Referer来进行相应地跳转:

在这里插入图片描述

闭合绕过

观察, 发现可以闭合绕出input标签, 然后加xss:

在这里插入图片描述

构造payload:

Referer:'"><script>alert(1)</script>

成功弹窗

在这里插入图片描述

High

将所有关键字转换为HTML实体, 安全:

在这里插入图片描述

0x07、XSS - Reflected (Custom Header)

有的web会加上自定义的http字段信息, 且没有做好过滤

Low

直接在Http头中加入bWAPP字段信息:

payload:

bWAPP:<script>alert(1)</script>

成功弹窗

在这里插入图片描述

Medium

由于采用了addslashes()函数转义单引号等字符, 但是仍可以xss注入

High

将所有关键字转换为HTML实体, 安全:

在这里插入图片描述

0x08、XSS - Reflected (Eval)

Low&High

很明显的一个执行函数eval(), 通过参数date传入可执行的js:

构造payload:

http://localhost:8080/bWAPP/xss_eval.php?date=alert(1)

在这里插入图片描述

Medium

不影响js代码的执行

在这里插入图片描述

0x09、XSS - Reflected (HREF)

web流程大致是先输入姓名, 再进行电影投票:

在这里插入图片描述

Low

分析

观察名字被写入了页面中:

在这里插入图片描述

于是直接在输入名字的地方xss:

发现在p标签中:

构造payload:

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

成功闭合

在这里插入图片描述

再者, 注意到链接处也可以闭合绕出:

在这里插入图片描述

构造payload:

1>Vote</a> <script>alert(1)</script>

成功闭合

在这里插入图片描述

Medium&High

源码中使用了urlencode()函数来进行过滤。

0x0A、XSS - Reflected (Login Form)

Low

开始先xss盲打一下:

在这里插入图片描述

不行, 输入单引号, 尝试sql注入:

在这里插入图片描述

发现单引号后面的内容(123)被输出到页面上, 并且应该是没做过滤的。

于是在单引号后面xss:

构造payload:

bee' 123 <script>alert(1)</script>

成功弹窗

在这里插入图片描述

Medium

使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。

High

用了htmlspecialchars()函数来进行过滤。

0x0B、XSS - Reflected (Referer)

和0x06那关一样, 抓包修改Referer即可。

0x0C、XSS - Reflected (User-Agent)

同理, 抓包修改User-Agent即可。

0x0D、 XSS - Stored (Blog)

同 SQL Injection - Stored (Blog)

0x0E、XSS - Stored (Change Secret)

xss盲打

先把密码修改为xss的payload:

<script>alert('hack')</script>

修改成功

在这里插入图片描述

进入SQL Injection (Login Form/User)

然后当用户登录的时候, 就会触发xss:

在这里插入图片描述

修改前端代码

观察前端, 发现有一个隐藏的input标签:

在这里插入图片描述

将type改为text, 然后在其中输入绕出闭合即可xss:

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

隐藏标签会显示出来

在这里插入图片描述

成功弹窗

在这里插入图片描述

Medium

使用了addslashes()函数来进行过滤,因为有转义,所以该函数无效。

High

用了htmlspecialchars()函数来进行过滤。

0x0F、XSS - Stored (User-Agent)

同 SQL Injection - Stored (User-Agent)

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

CSDN: 
https://rdyx0.blog.csdn.net/公众号:儒道易行
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect博客:
https://rdyx0.github.io/先知社区:
https://xz.aliyun.com/u/37846SecIN:
https://www.sec-in.com/author/3097FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85

相关文章:

【bWAPP】XSS跨站脚本攻击实战

别低头&#xff0c;皇冠会掉&#xff1b;别流泪&#xff0c;贱人会笑。 0x01、XSS - Reflected (GET) Low 输入的内容直接输出到页面中: 后台服务端没有对输入的参数进行过滤, 构造一个注入xss payload即可: <script>alert(1)</script> 成功弹窗 Medium 审查…...

Ubuntu 22.04,Rime / luna_pinyin.schema 输入法:外挂词库,自定义词库 (****) OK

测试平台: Ubuntu 22.04 sudo apt install ibus-rime 实例 1 :不实用的 实例 2 :实用的 文件使用说明:已经内嵌在文件中了。 ====================================== 实例 1 :不实用的 一共需要 3 个文件,放在用户文件夹下:~/.config/ibus/rime/ # Test A @ Fi…...

多协议视频监控汇聚/视频安防系统Liveweb搭建智慧园区视频管理平台

智慧园区作为现代化城市发展的重要组成部分&#xff0c;不仅承载着产业升级的使命&#xff0c;更是智慧城市建设的重要体现。随着产业园区竞争的逐渐白热化&#xff0c;将项目打造成完善的智慧园区是越来越多用户关注的内容。 然而我们往往在规划前期就开始面临众多难题&#…...

如何高效获取Twitter数据:Apify平台上的推特数据采集解决方案

引言 在数据分析和市场研究领域&#xff0c;Twitter&#xff08;现在的X&#xff09;数据一直是重要的信息来源。但是&#xff0c;自从Twitter更改API定价策略后&#xff0c;获取数据的成本大幅提升。本文将介绍一个经济实惠的替代方案。 为什么需要Twitter数据&#xff1f; …...

第二部分:进阶主题 15 . 安全管理 --[MySQL轻松入门教程]

MySQL 数据库的安全管理是一个多方面的工作,涉及到了解和配置数据库的访问控制、加密、备份与恢复策略、日志记录等多个方面。以下是一些关键点: 1. 用户权限管理 最小权限原则:每个用户应该只被授予完成其工作所需的最低限度的权限。定期审查权限:定期检查用户的权限,确…...

力扣hot100——双指针

283. 移动零 class Solution { public:void moveZeroes(vector<int>& nums) {for (int i 0, j 0; j < nums.size() || i < nums.size(); j) {if (j > nums.size()) {nums[i] 0;continue;}if (nums[j]) nums[i] nums[j];}} }; 双指针&#xff0c;一个指…...

【代码随想录day58】【C++复健】 117. 软件构建(拓扑排序);47. 参加科学大会(dijkstra(朴素版)精讲)

117. 软件构建&#xff08;拓扑排序&#xff09; 继续边看解析边做题&#xff0c;思考时的问题做个如下的总结&#xff1a; 1. 存边用什么数据结构&#xff1f; 在题目中&#xff0c;我们需要存储节点之间的依赖关系&#xff08;边信息&#xff09;。选择适合的数据结构非常重…...

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__()&#xff1a; 调用父类 nn.Module 的初始化方法&#xff0c;确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…...

费解的开关(bfs + 哈希表 or 递推)

题目描述: 25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。 我们用数字“1”表示一盏开着的灯,用数字“0”表示关…...

C语言——实现求出最大值

问题描述&#xff1a;利用C语言自定义函数求出一维数组里边最大的数字 //利用函数找最大数#include<stdio.h>int search(int s[9]) //查找函数 {int i , max s[0] , max_xia 0;for(i0;i<9;i){if(s[i] > max){max_xia i;max s[max_xia];}}return max; } in…...

基于微信小程序的短视频系统(SpringBoot)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

Flutter 中 Sliver 的各种装饰器介绍与使用

在 Flutter 中&#xff0c;Sliver 是一种可以在滚动视图中实现自定义效果的组件。Sliver 组件可以根据滚动位置动态改变其外观和行为。本文将介绍几种常用的 Sliver 装饰器及其使用方法。 1. SliverAppBar SliverAppBar 是一个可以随着滚动而变化的应用栏。它可以在用户向下滚…...

电感的基本概念

电感的定义&#xff1a; 电感一般是由导线绕成空芯线圈或带铁芯的线圈而制成。 当线圈中有电流通过时&#xff0c;线圈周围就会产生磁场&#xff0c;当线圈中流过的是直流电流时&#xff0c;线圆周围就会产生固定的磁场&#xff0c;线圈产生的物理现象就是电磁铁&#xff0c;当…...

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程

系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…...

HTTP协议和接口测试详解

介绍接口测试前我们先来介绍一下HTTP协议&#xff0c;为什么先要介绍HTTP协议呢因为因为我们做接口测试其实就是用测试工具&#xff08;postman,fiddler,jmeter等等&#xff09;或代码来模拟用户使用软件的场景&#xff0c;在我们模拟的时候不像平时功能测试时我们有已经开发完…...

vue3【实战】定义全局方法(两种方案)

以全局方法 calculate 为例 src/utils/calculate.ts export default {sum: function (a: number, b: number) {return a b} }方案1&#xff1a; 依赖注入 provide inject main.ts import calculate from ./utils/calculateapp.provide(calculate, calculate)页面中 // esl…...

基于JavaScript的DBUtils增删改查操作实验

1、实验目的 学习和掌握数据库连接池的配置与管理。使用DBUtils进行增删改查操作。按照步骤&#xff0c;掌握并实现使用DBUtils实现增删改查的全过程。 2、实验所用方法 上机实践 3、实验步骤及截图 创建一个数据库表&#xff0c;使用下面sql语句创建数据库表并插入数据&#x…...

初学stm32 --- 系统时钟配置

众所周知&#xff0c;时钟系统是 CPU 的脉搏&#xff0c;就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32 的时钟系统比较复杂&#xff0c;不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问&#xff0c;采用一个系统时钟不是很简单吗&#xff1f;为…...

实现星星评分系统

使用HTML、CSS和JavaScript实现星星评分系统 本文将详细讲解如何使用 HTML、CSS 和 JavaScript 实现一个简单的星星评分系统。用户可以通过点击星星进行评分&#xff0c;并且还能够看到星星的悬浮效果和已选中状态。 1. HTML 结构 我们首先在 HTML 中定义了一个星星评分的结…...

数据库建模工具 PDManer

数据库建模工具 PDManer 1.PDManer简介2.PDManer使用 1.PDManer简介 PDManer&#xff08;元数建模&#xff09;是一款功能强大且易于使用的开源数据库建模工具。它不仅支持多种常见数据库&#xff0c;如MySQL、PostgreSQL、Oracle、SQL Server等&#xff0c;还特别支持国产数据…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...