xss-labs第15关
前言:
xss-labs第15关
目录
测试思路:
两天后的思路:
新发现:
整理思路:
测试行动:
思考:
内容:
测试思路:
没有思路,打开一篇空白,想了一下,打开15关源代码,发现需要构造参数src,然后我就去问chatgpt了,试了好久,chatgpt也没想出来,我也没想出来
看答案,,,
两天后的思路:
过了两天,在来看这道题还是没有思路,但是通过重新看标签,好像有一点点思路了,ng-include,就是思路说,先去看ng-include这是什么,怎么用
通过上面的观看,我好像知道了ng-include是关于文件包含的,但是他又没有给出实际的参数,是为啥呢?
思考1:我怎么知道他是由什么传参给后台的,他为啥能传参给后台,?我是怎么知道他的参数命名规则是什么?
<body><span class="ng-include:https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-home.csdnimg.cn%2Fimages%2F20230724024159.png%3Forigin_url%3D111%26pos_id%3Dbit8Zjsb&pos_id=bit8Zjsb1"></span></body>
就是说为啥这里为啥会有个参数值到后端呢?
经过一段时间的理解,在加上chatgpt的疏导,也就是说看到ng-include,就应该想到会有变量来控制ng-include,来解析此域名下的html文件。
新发现:
最后一天,就是又有新的发现,以下是新的发现
至于为啥是src作为参数值的话,需要如何判断呢?
既然猜测有参数值,那就爆破这个参数值,一般的话,不存的参数值会返回错误页面,存在的参数值返回正常页面,且正常页面的长度一般是大于报错页面的长度,
根据返回长度的判断,就可以判断那个参数值是否存在了,action
一般参数值应该也不会长,且都是英文格式
根据这个原理,这个爆破这个参数值,假设长度最长为3,
开爆
好像又发现一件事情,就是说如果参数正常,他的值将会带入html页面来,所以返回的长度自然要比其他参数高
成功发现,是src参数值。
整理思路:
首先这关的思路就是利用ng-include能够解析文件,并返回当前页面,所以包含第一关的文件,并且执行第一关的弹窗,这关就算过了
测试行动:
先简单测试一下,是否包含第一关,就会返回第一个的内容
测试payload:?src='level1.php'
包含第一关?src='level1.php?name=<img src=1 οnclick=alert(1)>',闯关成功,这就结束了,
?src="level1.php?name=<img src=1 οnclick=alert(1)>",双引号和单引号都是一样的,可以
细究xss,当我查看后端源码时,发现<>都被转义了,为何还能执行xss漏洞?
问了ai,他说angulars会将这些内容反转义,然后继续执行
但是不能直接输入实体化编码后的<>,不知道为啥会这样,,,,,???
思考:
1、关于为啥要加引号,已经有大佬给出答案了xss-labs靶场-第十五关 ng-include XSS - FreeBuf网络安全行业门户
整理理解:在 AngularJS 中,ng-include:
后面是 JS 表达式;你需要使用引号包裹字符串路径,JS 中单双引号等价,但为了 HTML 属性嵌套,通常使用单引号包外、双引号包内是最稳妥的方式。
2、为啥就是ng-include里的<>被实体化了还是能被执行?
ng-include
加载的模板文件中,若有内容经过了 HTML 实体转义,但 AngularJS 会对这些内容执行“反转义”并把它当成 HTML 片段编译和插入;