Common Web Protocols
HTTP & HTTPS
HTTP与HTTPS就是在浏览器中访问互联网网页所用到的协议。
HTTP就是应用最广泛的网络协议,数据在传输的过程中都是明文,所以运用HTTP协议来传输一些隐私数据就不安全。
HTTPS可以理解为安全版的HTTP协议,核心是加入了SSL(Secure Sockets Layer),通过SSL协议完成对所传输内容的加密。
HTTP是无状态的,通过抓包修改包头通常能够实现身份的伪造,而HTTPS需要身份验证,相对更加安全。
FILE
FILE协议是用来访问本地文件的,可以访问文件夹。
FTP
FTP协议经常用在局域网中,通过该协议来进行文件的快速传输。
BLOB
目前在一些在线视频音乐播放网页中,在审查html找src的时候经常能够看到以blob::
开头的链接,粘贴进浏览器却没法访问。
事实上blob协议的链接是一个本地创建的URL,通过这个只存在于本地的链接去访问视频音乐,并在使用结束后销毁掉该URL,这样能够减少相应文件被直接爬下来的情况出现。
1 | var url = URL.createObjectURL(new Blob(["hello, world!"], {type: "text/plain"})) |
PHP Pseudo-protocols
PHP的伪协议经常在文件包含的题目中运用到。
php://filter
编码流,可以用来获取php代码。不过如果直接read进来的话会把代码执行掉,想要不执行代码的话一般通过base64加密通过输出拿到手后再解密来看。
Example: php://filter/read=convert.base64.encode/resource=useless.php
php://input
输入流,可以用来执行POST数据中的php代码。不过在enctype="multipart/form-data
的时候这种方法会失效。
data://
数据流,可以传入数据,支持MIME格式的解析。
Example:
data://text/plain,<?php phpinfo()?>
,可以执行php代码,但没有试过。data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
,最终的结果会是这串加密内容解密后的内容,可用来绕过过滤。
Others
phar://
zlib://
glob://
rar://
ogg://
expect://
这些没有见过,以后见到再补充吧。