# [FireshellCTF2020] Caas C 的预处理
# ![1]()
进入可以看到是一个编译器 ,输入简单的 php 代码试试
<?php phpinfo();?> |
不知道什么的报错,直接复制报错代码百度一下看看(仔细地可以看见最前面有一个后缀.c)
发现清一色的 C 语言报错,那我们找个 c 语言代码传进去试试
#include <stdio.h> | |
int main() | |
{ | |
printf("hello, world"); | |
} |
下载出来一个不知什么文件
思路到这里就断了,其实可以猜到 flag 在服务器的某个文件下,也许就是 /flag,但是不知道怎么读取,难道是一个 c 语言漏洞么,感觉给出的文件又看不懂
看了别人的考的是 c 语言的预处理
利用 include 预处理将我们所需的文件包含进来
试试
#include 'etc/passwd' |
叫我们用 <> 或者双引号包含文件名
发现报错了,但是仔细看文件内容已经出来了
#include </proc/self/cmdline> 看一下执行什么命令 |
用处不大
cwd
直接 /flag ,发现尖括号报错信息没出来,但是双引号可以
上面那个 cwd 之所以出不来是因为我们 include 是包含一个文件而不是 cwd 目录,/proc/self/cwd 返回的当前目录有哪些文件
参考链接:https://blog.csdn.net/qq_54929891/article/details/124781749