# [FireshellCTF2020] Caas C 的预处理

# 1

进入可以看到是一个编译器 ,输入简单的 php 代码试试

<?php phpinfo();?>

2

不知道什么的报错,直接复制报错代码百度一下看看(仔细地可以看见最前面有一个后缀.c)

3

发现清一色的 C 语言报错,那我们找个 c 语言代码传进去试试

#include <stdio.h>  
int main() 
{     
printf("hello, world");
}

下载出来一个不知什么文件

思路到这里就断了,其实可以猜到 flag 在服务器的某个文件下,也许就是 /flag,但是不知道怎么读取,难道是一个 c 语言漏洞么,感觉给出的文件又看不懂

看了别人的考的是 c 语言的预处理5

利用 include 预处理将我们所需的文件包含进来6

试试

#include 'etc/passwd'

7

叫我们用 <> 或者双引号包含文件名

8

发现报错了,但是仔细看文件内容已经出来了

#include </proc/self/cmdline> 看一下执行什么命令

9

用处不大

10

cwd

11

直接 /flag ,发现尖括号报错信息没出来,但是双引号可以

12

上面那个 cwd 之所以出不来是因为我们 include 是包含一个文件而不是 cwd 目录,/proc/self/cwd 返回的当前目录有哪些文件

参考链接:https://blog.csdn.net/qq_54929891/article/details/124781749