zoukankan      html  css  js  c++  java
  • pwnable.kr-fd-Writeup

    pwnable.kr-fd-Writeup

    • 根据题目描述Mommy! what is a file descriptor in Linux? 知该题与Linux系统下的文件描述有关;
    • ssh远程登录如下:
    • 根据题目提示,ls -l查看文件及权限如下,由下图,用户fd只具有读文件fd.c的权限(尝试sudo chmod增加权限,但失败):
    • cat fd.c读取fd.c中的内容,可得到如下代码:
     1 fd@ubuntu:~$ cat fd.c
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 #include <string.h>
     5 char buf[32];
     6 int main(int argc, char* argv[], char* envp[]){
     7         if(argc<2){
     8                 printf("pass argv[1] a number
    ");
     9                 return 0;
    10         }
    11         int fd = atoi( argv[1] ) - 0x1234;
    12         int len = 0;
    13         len = read(fd, buf, 32);
    14         if(!strcmp("LETMEWIN
    ", buf)){
    15                 printf("good job :)
    ");
    16                 system("/bin/cat flag");
    17                 exit(0);
    18         }
    19         printf("learn about Linux file IO
    ");
    20         return 0;
    21 
    22 }
    23 
    24 fd@ubuntu:~$
    • 分析上述代码,执行system("/bin/cat flag");语句,即可获得flag;
    • 执行system("/bin/cat flag");需要使buf == "LETMEWIN";
    • 继续分析,需要buf通过read函数读入"LETMEWIN ",有read函数的定义,需要使fd==0;
    • 则有atoi( argv[1] ) == 0x1234(即十进制下的4660),由atoi函数的定义,需要argv[1] == "4660";
    • 进而由LinuxC下argv[]的相应定义可以构造输入,LinuxC下argc,argv[]的意义请参考http://www.cnblogs.com/WangAoBo/p/6366600.html
    • echo "LETMEWIN" | ./fd 4660

    如下,flag为:mommy! I think I know what a file descriptor is!!

    2017-2-4 22:24;39

  • 相关阅读:
    NACBD
    周总结7
    周总结6
    团队题目——TD课程通
    移动端疫情展示
    周总结5
    每周总结4
    每周总结3
    每周总结2
    求最大子数组
  • 原文地址:https://www.cnblogs.com/WangAoBo/p/6366517.html
Copyright © 2011-2022 走看看