pwnable.kr 1.fd writeup

拿到题目
在这里插入图片描述
先连上去
在这里插入图片描述
ls查看下目录
在这里插入图片描述
文件目录下有 fd,fd.c ,flag文件。
用cat 查看下fd.c源文件得到如下源代码:。

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

}

read()会把参数fd所指的文件传送n个字节到buf指针所指的内存中。
百度下,linux file IO,得知
fd=0,是标准输入,
fd=1,是标准输出,
fd=2,是标准错误输出。
那么想要从fd所指向的文件读取内容到buf里,则需要fd的值为0;

int fd = atoi( argv[1] ) - 0x1234

atoi函数是将字符串转化为整型数字,那就很明显了,只需输入的字符串等于0x1234,将0x1234转化为10进制是4660。
输入 ./fd 4660后 再输入LETMEWIN就行了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43394612/article/details/84967517
今日推荐