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

pikachu靶场-Cross-Site Scripting(XSS)

sqli-labs靶场安装以及刷题记录-dockerpikachu靶场-Cross-Site Scripting

  • pikachu靶场的安装
  • 刷题记录
    • 反射型xss(get)
    • 反射型xss(post)
    • 存储型xss
    • DOM型xss
    • DOM型xss-x
    • xss盲打
    • xss之过滤
    • xss之htmlspecialchars
    • xss之href输出
    • xss之js输出

pikachu靶场的安装

刷题记录

反射型xss(get)

在这里插入图片描述
输入设置了长度限制,前端可以直接改
在这里插入图片描述

在这里插入图片描述
改maxlength值,之后输入脚本成功注入

<script>alert(1)</script>

反射型xss(post)

在这里插入图片描述
执行登陆操作,登陆成功后有一个输入框,可以输入注入语句在这里插入图片描述

存储型xss

在这里插入图片描述
同样直接输入注入语句试试

<script>alert(1)</script>

直接弹窗了,看下源码,没有任何过滤在这里插入图片描述

DOM型xss

在这里插入图片描述
输入aaaaaa,点击click me会生成一个链接,那可以让它指到刚刚的存储型xss网站来触发弹窗

在这里插入图片描述

输入xss_stored.php,点击what do you see
在这里插入图片描述

DOM型xss-x

在这里插入图片描述
输入123444,观察源码在这里插入图片描述

输入123444后,依次点击所弹出的链接,url变化为

//请说出你的伤心往事
/vul/xss/xss_dom_x.php?text=123444
//有些费尽心机想要忘记的事情,后来真的就忘掉了
/vul/xss/xss_dom_x.php?text=123444#
//就让往事都随风,都随风吧
/vul/xss/123444

同样可以输入xss_stored.php使其跳转到存储型xss网站来触发弹窗

xss盲打

在这里插入图片描述
输入各种语句都是一样的回显,看了提示有后台/xssblind/admin_login.php
在这里插入图片描述
在这里插入图片描述
打开后台页面,会弹窗刚刚提交的注入语句

刚好配置一下文件扫描工具dirsearch,下载zip解压直接

python dirsearch.py -u http://ip:9002/vul/xss/xssblind/
conda create --name py39 python=3.9//需要3.9及以上版本python

xss之过滤

在这里插入图片描述
输入注入语句试试

<script>alert(1)</script>

发现回显只剩一个>了,被继续测试,猜一下过滤规则,发现大小写混合可以绕过

<Script>alert(1)</Script>

xss之htmlspecialchars

输入注入语句,之后点击链接弹窗成功

javascript:alert(1)

相关知识点学习:
htmlspecialchars() 是一个用于避免 XSS(跨站脚本攻击) 的 PHP 函数,它的主要作用是将 HTML 特殊字符转义为实体编码,从而防止恶意用户在输入内容中注入 HTML 或 JavaScript 代码。这是常见的 Web 应用程序中用户输入处理的重要部分,尤其是在显示数据时。

基本用法

htmlspecialchars(string $string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE, string $encoding = 'UTF-8', bool $double_encode = true): string

参数说明

  1. $string:

    • 这是需要被转义的字符串。通常是用户输入的数据。
  2. $flags:

    • 这是可选参数,用来指定如何处理不同的字符。常见的标志有:
      • ENT_COMPAT:默认。将双引号 (") 转义为 &quot;,但不转义单引号 (')。
      • ENT_QUOTES:将双引号和单引号都转义。也就是说," 会转义为 &quot;,而 ' 会转义为 &#039;
      • ENT_NOQUOTES:不转义任何引号。
      • ENT_HTML401, ENT_XML1, ENT_XHTML, ENT_HTML5:这些用于指定 HTML 实体的文档类型(HTML 4.01、XML 1、XHTML、HTML5)。
      • ENT_SUBSTITUTE:当给定的字符集无法表示某些字符时,使用替代字符。
  3. $encoding:

    • 这是字符编码的选项。默认值是 UTF-8,但可以根据需要设置为其他编码(如 ISO-8859-1)。
  4. $double_encode:

    • 如果设置为 false,则不会对已经被转义的实体再次进行转义。例如,如果字符串中已经包含 &amp;,它不会再次转义为 &amp;amp;。默认为 true

常见例子

  1. 基本用法

    $input = "<script>alert('XSS');</script>";
    echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
    

    输出

    &lt;script&gt;alert(&#039;XSS&#039;);&lt;/script&gt;
    
    • htmlspecialchars()< 转义为 &lt;> 转义为 &gt;,从而避免了用户输入的 JavaScript 被浏览器解释和执行。
  2. 处理双引号和单引号

    $input = 'He said, "Hello!"';
    echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
    

    输出

    He said, &quot;Hello!&quot;
    
    • ENT_QUOTES 标志确保了双引号被转义为 &quot;
  3. 避免重复转义

    $input = '&lt;strong&gt;Hello&lt;/strong&gt;';
    echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8', false);
    

    输出

    &lt;strong&gt;Hello&lt;/strong&gt;
    
    • 因为 double_encode 参数被设置为 false,所以已经转义的实体不会再次被转义。

使用场景

  1. 显示用户输入的数据
    当用户提交包含 HTML 或 JavaScript 的数据时,直接输出可能会被浏览器解释并执行。这会导致跨站脚本攻击(XSS)。htmlspecialchars() 可以有效防止这种情况。

    $comment = "<script>alert('hacked');</script>";
    echo htmlspecialchars($comment, ENT_QUOTES, 'UTF-8');
    

    这样可以确保用户输入的 <script> 标签不会被执行,而是显示为普通文本。

  2. 防止 XSS 攻击
    用户通过表单提交恶意代码是 XSS 攻击的常见方式。通过使用 htmlspecialchars(),可以将这些恶意代码转义为普通文本,防止被执行。

  3. 与数据库结合使用
    当你将用户输入的数据存入数据库并从数据库读取数据进行展示时,使用 htmlspecialchars() 来展示用户生成的内容是一个好习惯。它能确保显示的数据是安全的,而不是被解析为 HTML 或 JavaScript。

转义的字符列表

  • & 转义为 &amp;
  • < 转义为 &lt;
  • > 转义为 &gt;
  • " 转义为 &quot;
  • ' 转义为 &#039;(仅在 ENT_QUOTES 标志下)

注意事项

  • htmlspecialchars() 主要用于输出 HTML 内容时对用户输入的转义。如果你需要将用户输入作为 HTML 标记(比如 <div>)安全地显示,htmlspecialchars() 是首选。
  • 对于更复杂的场景,比如需要处理完整的 HTML 文档或需要转义所有 HTML 实体,可以使用 htmlentities() 函数。

总结

  • htmlspecialchars() 是防止 XSS 攻击的一个重要函数,通过将特殊字符转义,避免浏览器将其解释为 HTML 或 JavaScript 代码。
  • 它在输出用户输入的数据时尤其重要,比如在评论区、聊天框等地方。

xss之href输出

在这里插入图片描述

javascript:alert(1)//同样可以绕过

xss之js输出

在这里插入图片描述

输入

javascript:alert(1)
?message=javascript%3Aalert%281%29&submit=submit//Url中多了message参数	

提示
在这里插入图片描述
随便输入看一下源码
在这里插入图片描述
尝试闭合

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

在这里插入图片描述
没有闭合,再试一次

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

成功弹窗


http://www.kler.cn/news/368501.html

相关文章:

  • C#编程进阶:深入理解属性与索引器
  • 提示工程(Prompt Engineering)指南(进阶篇)
  • Python条形图 | 指标(特征)重要性图的绘制
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • 【Docker】docker | 部署nginx
  • git命令笔记(速查速查)
  • node学习笔记
  • Python 函数返回值之None类型
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(1)
  • 控制Arduino的利器-Windows Remote Arduino
  • 基于SpringCloud的WMS管理系统源码
  • 如何搭建一部引人入胜的短剧小程序
  • 代码随想录算法训练营第二十五天|Day25 回溯算法
  • 关于AI网络架构的文章
  • Leetcode4:寻找两个正数数组中的中位数
  • 问:MySQL中的常用SQL函数整理?
  • MySQL全文索引检索中文
  • python pytz怎么安装
  • 华为配置 之 STP
  • 从图像识别到聊天机器人:Facebook AI的多领域应用
  • stm32单片机基于rt-thread 的 littlefs 文件系统 的使用
  • 使用Python Pillow库生成九宫格图片
  • ICP之点云特征计算
  • Python浪漫之画星星
  • Swarm集群管理常用命令与详解
  • Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2