美文网首页C++实现的
【Pwnable.kr】fd

【Pwnable.kr】fd

作者: Thriumph | 来源:发表于2019-05-31 00:35 被阅读44次

    题目源码:

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

    源码分析:

    从源码分析,可知,这个程序接收一个参数argv[1],这个参数转换成整数int型,然后减去0x1234,然后读入buf,输入:LETMEWIN,进行字符串比较,如果正确就读入flag这个文件

    知识点:

    read函数

    read()函数的三个参数中
    fd为0时,表示标准输入
    fd为1时,表示标准输出
    fd为2时,表示标准输出错误
    从fd中读32个字节到buf中
    当fd==0后输入LETMEWIN就能得到flag
    因为int fd = atoi( argv[1] ) - 0x1234;
    所以argv[1]=0x1234

    换成10进制4660

    mommy! I think I know what a file descriptor is!!

    相关文章

      网友评论

        本文标题:【Pwnable.kr】fd

        本文链接:https://www.haomeiwen.com/subject/qmieoqtx.html