[Pwnable.kr] fd
最近打算刷一下pwnable熟悉一下pwn这部分的知识,rules说是不太推荐写solution的,然而写了也无妨……搜了一下网上的也不少,不差我的这份了,写给自己留存看。
1分的文件描述符的题,有一个fd文件和一个flag文件,flag文件没有执行权限,通过运行fd文件,输入正确参数来获得flag。fd原代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#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; } |
第一个参数-0x1234 的结果决定了从哪里读数据。我们知道linux文件描述符0是标准输入,1是标准输出,最简单的方法让目标fd=0就好了,然后通过管道把“LETMEWIN”传给程序
Search Anything