原标题:一些适用于各种体系结构的初学者的Linux二进制缝隙运用开发使命
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,下面是相关的软件版别:
东西装置 装置包:
构建代码: ./build.sh 运用pip装置pwntools和ropper: pip install --user pwntools roppersudo apt-get install build-essential
sudo 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-gnu
sudo 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-cross
sudo apt-get install qemu-user
sudo 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-binfmt
sudo ln -s /usr/arm-linux-gnueabihf/ /etc/qemu-binfmt/arm
sudo ln -s /usr/aarch64-linux-gnu /etc/qemu-binfmt/aarch64
sudo ln -s /usr/mips-linux-gnu/ /etc/qemu-binfmt/mips
sudo ln -s /usr/mips64-linux-gnuabi64/ /etc/qemu-binfmt/mips64
sudo ln -s /usr/powerpc-linux-gnu/ /etc/qemu-binfmt/ppc
sudo ln -s /usr/powerpc64-linux-gnu/ /etc/qemu-binfmt/ppc64
sudo ln -s /usr/sparc64-linux-gnu/ /etc/qemu-binfmt/sparc64
参阅资料easy-linux-pwn:【GitHub传送门】
*参阅来历:xairy,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM
责任编辑: