码迷,mamicode.com
首页 > 其他好文 > 详细

pwnable.kr-fd-Writeup

时间:2017-02-04 23:15:52      阅读:842      评论:0      收藏:0      [点我收藏+]

标签:file   apple   :hover   http   构造   set   foo   let   htm   

 

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\n");
 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\n", buf)){
15                 printf("good job :)\n");
16                 system("/bin/cat flag");
17                 exit(0);
18         }
19         printf("learn about Linux file IO\n");
20         return 0;
21 
22 }
23 
24 fd@ubuntu:~$

 

  • 分析上述代码,执行system("/bin/cat flag");语句,即可获得flag;
  • 执行system("/bin/cat flag");需要使buf == "LETMEWIN";
  • 继续分析,需要buf通过read函数读入"LETMEWIN\n",有read函数的定义,需要使fd==0;
    技术分享
  • 则有atoi( argv[1] ) == 0x1234(即十进制下的4660),由atoi函数的定义,需要argv[1] == "4660";
    技术分享
  • 进而由LinuxC下argv[]的相应定义可以构造输入

    echo "LETMEWIN" | ./fd 4660

如下,flag为:mommy! I think I know what a file descriptor is!!
技术分享
2017-2-4 22:24;39

 

 

 

pwnable.kr-fd-Writeup

标签:file   apple   :hover   http   构造   set   foo   let   htm   

原文地址:http://www.cnblogs.com/WangAoBo/p/6366517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!