美文网首页PWN学习资料
Pwnable.kr学习记录(一)

Pwnable.kr学习记录(一)

作者: Sarace | 来源:发表于2019-05-31 14:07 被阅读0次

一、学习资料

首先当然是先学习一波理论知识,这种入门的东西百度上一大堆,我就不一一列举了,这里只放一下我的参考资料。仅供参考。

手把手教你栈溢出从入门到放弃

二、学习实践

在了解了基本知识之后,当然是要实践一下,我采用了Pwnable.kr,需要先自己注册一下,这里有不同难度的题目,内容涵盖多个领域,界面很可爱。youtube上也有相应的视频教程,这里有百度云的,提取码: 74ue不过建议先自己做,做出来之后可以再去看一看,学习一下新思路。

Pwnable.kr-01 fd

image.png

首先ssh连上,ls看一下都有什么东西,

1559279059270.png

可以看到有个flag文件,我们看看里面有什么,

1559279327276.png

发现没有权限,这可怎么办呢?

6983d90f5dd24481b88b197f862722d5.jpg

从上面的图中,我们也能看到,我们对flag这个文件的权限是0。既然这个文件我们没有权限,那我么们就看看还有什么其他东西吧。我们发现还有一个fd.c和一个fd文件,我们对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){//这里判断命令行参数个数是否小于2
        printf("pass argv[1] a number\n");
        return 0;
    }
    int fd = atoi( argv[1] ) - 0x1234;//把第二个命令行参数转成数字,再减0x1234
    int len = 0;
    len = read(fd, buf, 32);//以fd为文件描述符读取32个字节内容
    if(!strcmp("LETMEWIN\n", buf)){//比较buf是否与"LETMEWIN\n"相等
        printf("good job :)\n");
        system("/bin/cat flag");//这里会输出flag文件的内容
        exit(0);
    }
    printf("learn about Linux file IO\n");
    return 0;

}

经过分析源码,我们可以知道,只需要让fd程序替我们把flag打印出来就行了,这里涉及到了linux用户特殊权限的问题,不懂的同学可以自行百度谷歌,或者点击这个链接,Linux系统中的文件的s权限。这里fd程序就拥有SGID权限,可以以fd组的权限运行,自然就能查看flag文件的内容。

那怎么才能让fd程序帮助我们查看flag的内容呢?我们先随便运行一下看看效果。

1559281002151.png

发现并没有什么卵用,还叫我们去了解一下Linux的文件IO,好吧,那就去学习一下,FILE I/O

学习之后我们终于明白了,原来标准输入stdin的文件描述符是0,所以我们的命令行第二个参数应该是0x1234的十进制形式,也就是4660,然后就可以从标准输入,也就是键盘读取了,我们只需要再输入LETMEWIN,然后敲回车就可以看到flag了。

1559280408311.png

这里并没有用的我们前面学习资料里讲的知识,因为这只是第一个题,比较简单,是新手入门的,后面我们就会逐渐用到前面的知识了。

相关文章

  • Pwnable.kr学习记录(一)

    一、学习资料 首先当然是先学习一波理论知识,这种入门的东西百度上一大堆,我就不一一列举了,这里只放一下我的参考资料...

  • Pwnable.kr-3.bof

    下载链接:http://pwnable.kr/bin/bofhttp://pwnable.kr/bin/bof.c...

  • Pwnable.kr系列

    pwnable.kr

  • pwnable.kr collision

    今天咱们来继续玩 pwnable.kr pwnable.kr collision 同样的,我们远程连接上服务器,然...

  • 黑客练手入门| pwnable.kr—幼儿瓶—01:fd

    [TOC] 前言 担心有人不知道pwnable.kr是什么,所以觉得有必要简单介绍一下它。 pwnable.kr介...

  • pwnable第一关fd

    pwnable.kr是一个关于pwn的wargame网站,在上面我们能通过各种wargame学习到不同漏洞。 0x...

  • pwnable.kr第一题:fd

    pwnable.kr 一、要点 1.argc与argv 对于C语言int main(int argc char *...

  • pwnable.kr之brainfuck

    pwnable.kr之brainfuck.md Overview 题目给了一个简陋版的brainfuck解释器, ...

  • pwnable.kr 题解一

    0x01 fd 文件描述符 0、1、2分别代表标准输入、标准输出和标准错误,所以输入0x1234的十进制值,再次...

  • Pwnable.kr-4.flag

    下载链接:http://pwnable.kr/bin/flag 程序运行 1.在虚拟机下载 wget http:/...

网友评论

    本文标题:Pwnable.kr学习记录(一)

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