• XSS-labs靶场实战(六)——第15关及Angular JS利用


    今天继续给大家介绍渗透测试相关知识,本文主要内容是XSS-labs靶场实战第第15关及Angular JS利用。

    免责声明:
    本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
    再次强调:严禁对未授权设备进行渗透测试!

    一、第十五关简介

    进入第十五关,页面如下所示:
    在这里插入图片描述
    通过简单的测试,我们可以发现,我们可以上传src参数,src参数的值会限制在span标签中的ng-include后面,如下所示:
    在这里插入图片描述
    然而,该参数上传后会被进行过滤,查看页面PHP源码如下所示:
    在这里插入图片描述
    从上图可以看出,该参数使用了htmlspecialchars()函数进行过滤,因此我们无法直接对该参数进行XSS攻击。
    但是,我们注意到该处的ng-include参数,带有ng-include即表示使用了Angular JS,这也是本关的突破口。

    二、Angular JS简介

    为了解决这一关,我们先来简单了解以下Angular JS。(事实上,很多CTF比赛、SRC挖洞,考验的就是对很多知识的了解,例如本关,如果你不懂Angular JS,那么压根就没法突破。)
    Angular JS通过新的属性和表达式扩展了HTML,Angular JS可以把应用数据绑定到HTML元素中,可以重复、隐藏和显示HTML元素。Angular JS的很多参数都是以“ng”开头的,例如ng-app、ng-model、ng-bind等等。在这里,ng-include指令用于包含外部的HTML文件,其作用原理非常类似于文件包含(也可以将其简单理解为HTML中的文件包含)。
    例如,在本实例中,我们将ng-include后面的值设置为level1.php,其源代码如下所示:
    在这里插入图片描述
    但是这样简单的代码却带来了类似文件包含的效果,如下所示:
    在这里插入图片描述
    需要注意的是,在本质上,我们的浏览器在接收到上述源代码后,再请求指定的文件,而普通的文件包含(例如PHP),是在服务器后台将文件包含后,直接发送给客户端,这两种是有本质区别的。

    三、第十五关突破

    基于此,我们就可以构造如下的payload:

    'level1.php?name='
    
    • 1

    这样,虽然htmlspecialchars()函数过滤了我们输入的敏感符号,但是由于该符号被解析后传递到了level1.php的name参数中,因此我们可以成功突破。利用该payload突破后如下所示:
    在这里插入图片描述
    原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 相关阅读:
    基于pam实现的批量执行命令工具-Cyberark
    解码字母到整数映射(Java算法每日一题)
    Spring OAuth2 Resource Server 配置
    AM驱动架构—优质Mini-LED显示技术解决方案
    HTML5期末大作业:游戏网站设计与实现——基于bootstrap响应式游戏资讯网站制作HTML+CSS+JavaScript...
    基于51单片机光照强度检测智能窗帘Proteus仿真
    新老用户该如何选择腾讯云服务器!
    MySQL内连接和外连接及七种SQL JOINS的实现
    kubernates dashboard管理界面安装及管理员用户配置
    【deepstream部署Yolov6】
  • 原文地址:https://blog.csdn.net/weixin_40228200/article/details/127932940