zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

AngularJS 实战 利用 15 XSS 靶场 Labs
2023-09-14 09:01:44 时间

今天继续给大家介绍渗透测试相关知识,本文主要内容是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=<img src=123 οnerrοr=alert(1)>'

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