CTF-All-In-One/doc/6.3_pwn_xdctf2015_pwn200.md
2017-11-16 15:38:39 +08:00

1.4 KiB
Raw Blame History

6.3 pwn xdctf2015 pwn200

题目复现

出题人在博客里贴出了源码,如下:

#include <unistd.h>
#include <stdio.h>
#include <string.h>

void vuln()
{
    char buf[100];
    setbuf(stdin, buf);
    read(0, buf, 256);
}
int main()
{
    char buf[100] = "Welcome to XDCTF2015~!\n";

    setbuf(stdout, buf);
    write(1, buf, strlen(buf));
    vuln();
    return 0;
}

使用下面的语句编译:

$ gcc -m32 -fno-stack-protector -s pwn200.c

checksec 如下:

$ checksec -f a.out
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH    FORTIFY  Fortified Fortifiable  FILE
Partial RELRO   No canary found   NX enabled    PIE enabled     No RPATH   No RUNPATH   No     0               1       a.out

在开启 ASLR 的情况下把程序运行起来:

$ socat tcp4-listen:10001,reuseaddr,fork exec:./a.out &

这题提供了二进制文件而没有提供 libc.so而且也默认找不到在章节 4.8 中我们提供了一种解法,这里我们讲解另一种。

ret2dl-resolve 原理及题目解析

Exploit

完整的 exp 如下,其他文件放在了github相应文件夹中:

参考资料