美文网首页
CTF pwn题搭建的笔记

CTF pwn题搭建的笔记

作者: SevenBy | 来源:发表于2018-04-25 15:38 被阅读722次

    1.准备好题
      题目需要自己搞好,比如最简单的一个pwn(stackoverflow):

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    //#include "dump_stack.h"
    
    void vuln(int tmp, char *str) {
        int win = tmp;
        char buf[64];
        strcpy(buf, str);
       // dump_stack((void **) buf, 23, (void **) &tmp);
        printf("win = %d\n", win);
        if (win == 1) {
            execl("/bin/sh", "sh", NULL);
        } else {
            printf("Sorry, you lose.\n");
        }
        exit(0);
    }
    
    int main(int argc, char **argv) {
        if (argc != 2) {
            printf("Usage: stack_overwrite [str]\n");
            return 1;
        }
    
        uid_t euid = geteuid();
        setresuid(euid, euid, euid);
        vuln(0, argv[1]);
        return 0;
    }
    
    
    

    2.gcc/g++编译
      这时候直接使用命令gcc pwn1.c -o pwn1是不行的,不信你试试~

    ./pwn1
    1111111111111111111111
    *** stack smashing detected ***: ./3 terminated
    Aborted
    #stack smashing是GCC的一种检测“缓存溢出”的保护机制
    
    

    我们使用如下命令:

    gcc -fno-stack-protector -z execstack -mpreferred-stack-boundary=4  -o pwn1 pwn1.c
    #Ubuntu下面的GCC默认开启了Stack Smashing Protector,
    #如果想在这个系统中学习缓冲区溢出的原理,在编译时要加上fno-stack-protector选项,
    #否则运行时会出现*** stack smashing detected ***: xxx terminated,
    #而不是期望的Segmentation fault。同时还需要加上允许栈执行的选项。
    
    #-fno-stack-protector用来关闭gcc编译器gs验证码机制
    #-z execstack用来关闭ld链接器堆栈段不可执行机制
    
    

    3.关闭地址空间随机化(ASLR)
      首先确认系统中ASLR是否打开,cat /proc/sys/kernel/randomize_va_space,如果结果为2,则ASLR开启。
      关闭方法:sudo echo 0 > /proc/sys/kernel/randomize_va_space,即将randomize_ca_space文件内数字置0即可。

    接下来,就随便浪去吧……~

    2017年4月19日08:23:12,补充:额,可能是我当时写的时候比较赶,后面部分可能忘记写了……
    如果你想将题目挂载在服务器的端口,socat工具真的很方便:

    sudo apt-get install socat
    socat tcp-l:端口号,fork exec: filepath &
    
    

    另外,如果你想你的程序即使关闭虚拟终端也可以运行的话,使用nohup命令

    #首先编写一个.sh脚本
    #!/bin/sh
    #name:pwn1.sh
    socat tcp-l:9999,fork exec:./pwn1
    

    相关文章

      网友评论

          本文标题:CTF pwn题搭建的笔记

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