分享

一些适用于各种体系结构的初学者的Linux二进制漏洞利用开发任务

 九州君子好人 2019-12-18

Linux的PWN并不难

这是一套针对初学者的Linux二进制漏洞利用开发任务,目前这一套学习内容主要针对的是堆栈缓冲区溢出问题。

我创建这个项目是为了学习如何在不同体系结构上执行简单的二进制开发,出于教育目的,在解决这一系列任务时,必须遵守下面列出的一组规则。这些任务其实飞铲小,有的规则是故意没有实现的。它与大多数CTF挑战相反,因为这些任务是直接提供给大家的,我们只需要去实现即可。

规则

1、所有任务都必须使用建议的方法来解决,即使你有其他更简单的方法。2、所有任务都必须通过假定启用或禁用的特定保护来解决,即使体系结构、工具链或特定环境不支持它们。3、所有任务都假设了一个动态链接的libc和已知的二进制文件。4、所有的ROP链都必须手动构造。
1、:溢出buffeer,并重写x的值。2、:使用not_called的地址重写堆中任意的返回地址。3、:跳转到一个one_gadget地址,确保满足特定的条件,对于某些架构,可能需要使用到ROP链。4、:在栈中分配一个shellcode,并启动/bin/sh。5、:跟之前的任务一样,但这里的栈地址是未知的。6、:组成一个ROP链来执行system(“/bin/sh”)。7、:组成一个ROP链并通过syscall执行execve(“/bin/sh”,NULL, NULL)8、:组成一个ROP链来重写x值,并跳转到not_called。

空白处意味着保护状态跟建议的方法不相关。

禁用ALSR:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

启用ASLR:

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space 解决方案

这些解决方案仅供参考,并不一定适用于所有场景。

环境要求

这些任务已经在x86-64 CPU设备上进行了测试,测试平台为Linux Mint 19.1,下面是相关的软件版本:

工具安装 安装包:

sudo apt-get install build-essentialsudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnugcc-mips-linux-gnu gcc-mips64-linux-gnuabi64 gcc-powerpc-linux-gnugcc-powerpc64-linux-gnu gcc-sparc64-linux-gnusudo apt-get install libc6-dev:i386 libc6-armhf-cross libc6-arm64-cross libc6-mips-crosslibc6-mips64-cross libc6-powerpc-cross libc6-ppc64-cross libc6-sparc64-crosssudo apt-get install qemu-usersudo apt-get install gdb gdb-multiarch#These are probably not required, but just in case:#sudo apt-get install gcc-7-multilib gcc-multilib-arm-linux-gnueabigcc-multilib-mips-linux-gnu gcc-multilib-mips64-linux-gnuabi64gcc-multilib-powerpc-linux-gnu gcc-multilib-powerpc64-linux-gnu

为QWMU和pwntools安装qemu-binfmt:

sudo mkdir /etc/qemu-binfmtsudo ln -s /usr/arm-linux-gnueabihf/ /etc/qemu-binfmt/armsudo ln -s /usr/aarch64-linux-gnu /etc/qemu-binfmt/aarch64sudo ln -s /usr/mips-linux-gnu/ /etc/qemu-binfmt/mipssudo ln -s /usr/mips64-linux-gnuabi64/ /etc/qemu-binfmt/mips64sudo ln -s /usr/powerpc-linux-gnu/ /etc/qemu-binfmt/ppcsudo ln -s /usr/powerpc64-linux-gnu/ /etc/qemu-binfmt/ppc64sudo ln -s /usr/sparc64-linux-gnu/ /etc/qemu-binfmt/sparc64

easy-linux-pwn:【GitHub传送门】

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多