查看题目
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.
拿到值
小菜鸡的操作,大佬别喷。