[FireshellCTF2020]Caas C的预处理

本文描述了一位安全研究员尝试通过PHP和C语言代码在编译器中执行命令和包含文件的过程。遇到的挑战包括理解C语言报错、尝试读取服务器上的flag文件以及利用#include预处理指令。尽管无法直接通过尖括号读取/flag,但双引号成功显示了部分信息。研究者意识到可以通过预处理来尝试包含服务器上的特定文件。
摘要由CSDN通过智能技术生成

进入可以看到是一个编译器 ,输入简单的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返回的当前目录有哪些文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值