pwn学习fd

本文介绍了一篇关于Linux系统中文件描述符的概念,并通过分析给出的C程序源代码,展示了如何利用参数输入来改变文件描述符值,以达成条件判断并执行特定命令获取flag的过程。博客内容涉及Linux文件I/O、C编程和安全漏洞利用基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看题目

play平台

Mommy! what is a file descriptor in Linux?

  • try to play the wargame your self but if you are ABSOLUTE beginner, follow this tutorial link:
    https://youtu.be/971eZhMHQQw

看到题目蒙蔽的很,还好下面给了一个ssh的链接和账号可以直接链接查看(这里就不放出来了,大家可以去官网查看哟!)

尝试

链接上ssh之后就可以查看堆领的文件了,发现了三个文件,一看权限发现,fd可执行,fd.c就只能看,flag只是存在那,啥都干不了。
在这里插入图片描述

没办法,给了源文件,那就看看源文件呗。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[32];
int main(int argc, char* argv[], char* envp[]){
	if(argc<2){
		printf("pass argv[1] a number\n");
		return 0;
	}
	int fd = atoi( argv[1] ) - 0x1234;
	int len = 0;
	len = read(fd, buf, 32);
	if(!strcmp("LETMEWIN\n", buf)){
		printf("good job :)\n");
		system("/bin/cat flag");
		exit(0);
	}
	printf("learn about Linux file IO\n");
	return 0;

}

一看额发现,可以输入一个参数,让程序接收,首先使用atoi函数将字符串转换为10进制与0x1234相减,这个ox1234=4660,然后是将这个相见之后的fd值读到buf这个char类型的数组中,使用strcmp函数判断str1和buf的字符串是否相等,相等就返回0,加上!,就可以到if里面,就成功的拿到了flag.

拿到值

在这里插入图片描述
小菜鸡的操作,大佬别喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值