美文网首页
Pwnable.kr-1.fd

Pwnable.kr-1.fd

作者: Zero_0_0 | 来源:发表于2018-10-13 20:44 被阅读0次

注:在服务器上输入命令:sudo apt-get install openssh-server 安装SSH服务端。
1.输入远程连接命令 输入密码
ssh fd@pwnable.kr -p2222 (pw:guest)
2.查看源码 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;
}

重点看read我们输出的条件,当满足我们的有条件的时候,成功输出!

注:

1.UNIX/Linux平台上,对于控制台(Console)的标准输入,标准输出,标准错误输出,也对应了三个文件描述符(即fd = File Description )。它们分别是0,1,2。也就是说read(0,buf,32)表示从键盘读入至多32个字节到buf中
2.atoi()表示输出的是整数,和int一个意思
3.对于C语言int main(int argc char *argv[])来说,argc保存的是命令行总的参数个数(包括程序名),argv这是传入参数的数组.
举个例子,当你执行:./test 1 2 3 时,argc = 4argv[0] = test",argv[1] = 1,argv[2] = 2,argv[3] = 3

解题

1.当我们输入./fd 4660 0x1234转换为十进制为4660
2.查看条件当我们的buf=LETMEWIN输出print

图片.png

相关文章

  • Pwnable.kr-1.fd

    注:在服务器上输入命令:sudo apt-get install openssh-server 安装SSH服务端。...

网友评论

      本文标题:Pwnable.kr-1.fd

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