[FireshellCTF2020]Caas C的预处理

1

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

1
<?php phpinfo();?>

2

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

3

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

1
2
3
4
5
#include <stdio.h>  
int main()
{
printf("hello, world");
}

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

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

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

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

试试

1
#include 'etc/passwd'

7

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

8

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

1
#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