欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]pwnablr.kr (刷题)之 Toddler's Bottle

[原创]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。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功