URL:http://localhost/xss-labs/level15.php?src=1.gif
图片链接地址:http://localhost/xss-labs/level15.png
查看源代码:
这里我们试着构造一个攻击PAYLOAD:
1.gif”><script>alert(1)</script>
可见,双引号,大于号和小号都被转义了!!!!
这里有一些问题,我们这里需要确定一下!!
第一:插入输入字段的位置:<span class>前面有一个ng-include 标识!
第二:源代码开头有一个html ng-app,什么意思,需要确认!
第三:开头引用了一个angular.min.js,这样一个JS脚本,啥意思?
小知识:首先,需要知识angular js是个啥?
是一个应用设计框架与开发平台!
用途呢!?就是编写和维护大量的JS代码!!!
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
filename |
文件名,可以使用表达式来返回文件名。 |
看大佬写的内容,这个ng-include有一些注意事项:对解决该XSS问题至关重要!!!
1.ng-include,如果单纯指定地址,必须要加引号2.ng-include,加载外部html,script标签中的内容不执行3.ng-include,加载外部html中含有style标签样式可以识别
4.ng-inclue,记载外部html中的link标签可以加载
angular.min.js 是压缩版的angular.js,主要是删除了注释,去除了所有的回车和空格,也对函数变量等做了缩写处理,在使用上没有任何区别,但是压缩版比较小,在正式环境中,越小的js文件,可以保证网站越快的被打开。
好的,基础知识完事,我们来看:啥思路可以突破这道题!!!
ng-include,加载外部html,script标签中的内容不执行
这个点,我们可以引用其他的外部HTML,但不能通过script标签生成XSS弹窗!!!
这里我们引用同文件夹中的level1.php文件!!!!
构造PAYLOAD:
?src=’level1.php?name=<img src=1 onclick=alert(1)>’
?src=’level1.php?name=<img src=1 onerror=alert(1)>’
这里需要一个说明:
但是level1.php不是一个php文件吗?这里解释一下,这是因为我们不是单纯的去包含level1.php,而是在后面添加了name参数值的。这就有点像是在访问了该参数值中地址之后把它响应在浏览器端的html文件给包含进来的意思。
最后,我们这里查看一个该题的后台服务器源代码!!!!
来源:freebuf.com 2021-08-01 16:23:36 by: 知非知非知非
请登录后发表评论
注册