最近比赛遇到了RPO,这里来进行扫盲。
知识点1---一个网站是如何加载的
一个html网站是如何加载的呢,网站是根据程序员编写的代码从上到下进行执行。
其中页面的加载和渲染都需要通过脚本执行,并且在脚本执行过程中网站的加载暂时停止,等待脚本加载完成,特别是JavaScript和src引入JavaScript(会暂停直接进行解析并执行,并且连续载入两个JavaScript文件加载过程中会有一段时间的间隔,这段时间就是js代码执行的时间 )
知识点2---什么是RPO漏洞
PRO漏洞说简单些,就是根据获取相对路径的js代码,比如刚刚过去的强网杯中的第一个src使用的就是相对路径。
在知识点一中我们说过,绕过遇到了js代码,网站就会停下来,进行加载和执行js代码,意味着js中需要寻找的js代码(漏洞所在之处:寻找的其他东西),一般都是.js文件,然后会将其中的.js文件读取出来并执行。
PRO漏洞就是根据服务器解析与浏览器(客户端)解析之间的微小差异而产生的漏洞,比如本次比赛中的一个payload:
http://39.107.33.96:20000/index.php/view/article/36967/..%2f..%2f..%2f..%2findex.php
在服务器端的强大容错和解析能力下会返回:
http://39.107.33.96:20000/index.php/
但是客户端就不一样 了,会将..%2f..%2f..%2f..%2findex.php当成是一个文件,然后加载这个文件相对目录下的static/js/jquery.min.js文件
但是这个目录是不存在的(或者出题发恶意作死弄这么一个也没办法,一般情况下),js无法解析,然后程序就很迷,不知道做什么,然后就会退回上一层目录,也就是:
http://39.107.33.96:20000/index.php/view/article/36967/
就将其中 的代码当做js代码进行执行。
然后赢取白富美,走上人生巅峰。
网友评论