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就行了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值