[原创]pwnablr.kr (刷题)之 Toddler's Bottle
前言
本来打算寒假的时候把这个题认真的刷一刷,结果...最近几天,把pwnable.kr上前2部分的题刷了刷,写了写解题的过程。
fd
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://www.youtube.com/watch?v=blAxTfcW9VU
根据提示,本题的关键在于文件描述符
ssh连接后,查看源文件:
fd@ubuntu:~$ ls
fd fd.c flag
fd@ubuntu:~$ 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;
}
根据维基百科上对于 file descriptor的定义:
| 整数值 | 名称 | <unistd.h> 符号常量[1] | <stdio.h> 文件流[2] | |
| 0 | Standard input | STDIN_FILENO | stdin | |
| 1 | Standard output | STDOUT_FILENO | stdout | |
| 2 | Standard error | STDERR_FILENO | stderr |
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
复制成功
