• 2、xss-labs之level2


    1、打开页面

    2、传入xss代码

    payload:,发现返回

    3、分析原因

    打开f12,没什么发现

    看后端源码,在这form表单通过get获取keyword的值赋给$str,然后$str通过htmlspecialchars()过滤

    htmlspecialchars() 是 PHP 中的一个函数,用于将特殊字符转换为 HTML 实体。这通常用于防止跨站脚本攻击(XSS),并确保特殊字符(如 <>&"' 等)在 HTML 上下文中被正确解析。

    1. $str = $_GET["keyword"];
    2. echo "

      没有找到和".htmlspecialchars($str)."相关的结果.

      "
      .'
    3. $str.'">

    4、构建payload

    所以我们通过前端可以看到:>

    所以我们考虑将 value=" "这个闭合,然后后面在跟我们的xss代码,这样传入的value就被过滤,但我们xss就被网页执行

    所有构建payload:">

    然后变成:

    5、疑惑反思

    做题遇到的疑惑:

    一开始我在想传入不是被htmlspecialchars 函数转义成<script>alert("ls /")</script>了么,然后又通过代码:echo "

    没有找到和".htmlspecialchars($str)."相关的结果.

    输出前端,为什么最后页面显示是“没有找到和 相关的结果。而不是”没有找到和<script>alert("ls /")</script>相关的结果.“

    通过查阅资料,就懂了

    6、网页渲染过程

    原理:

    1、你参数传进去,PHP 后端中使用 htmlspecialchars 对输入进行转义

    2、然后开始执行PHP的后端代码,你的参数就执行不了,传入的payload也执行不了

    3、PHP后端代码执行完后,浏览器会将转义后的字符还原为原始字符进行显示

    4、因此,页面最终显示的是用户原始输入的内容,而不是转义后的字符

    所以我们要通过闭合来绕开后端的过滤,来执行我的payload

    反思:开发与安全缺一不可

    总结:

    1、xss的payload的构建可以f12查看前端代码

    2、理解构建xss的闭合过程,其实就是绕过过滤

  • 相关阅读:
    景区售票管理系统,景区票务系统,景区售票系统毕业设计
    【k8s系列十四】nginx-ingress原理
    图形学-向量基础与应用
    .net core .net6 Form Cookie Login 认证
    STM32个人笔记-嵌入式C语言优化
    代码质量提升之注解一
    电子书(chm)-加载JS--CS上线
    阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF
    2023年中国研究生数学建模竞赛赛题浅析
    原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列4
  • 原文地址:https://blog.csdn.net/weixin_51520483/article/details/139202687