Linux二进制漏洞利用开发任务的示例分析
这篇文章主要为大家分析了Linux二进制漏洞利用开发任务的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux二进制漏洞利用开发任务的示例分析”的知识吧。
公司主营业务:成都网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出浦城免费做网站回馈大家。
Linux的PWN并不难
这是一套针对初学者的Linux二进制漏洞利用开发任务,目前这一套学习内容主要针对的是堆栈缓冲区溢出问题。
我创建这个项目是为了学习如何在不同体系结构上执行简单的二进制开发,出于教育目的,在解决这一系列任务时,必须遵守下面列出的一组规则。这些任务其实非常小,有的规则是故意没有实现的。它与大多数CTF挑战相反,因为这些任务是直接提供给大家的,我们只需要去实现即可。
规则
1、所有任务都必须使用建议的方法来解决,即使你有其他更简单的方法。
2、所有任务都必须通过假定启用或禁用的特定保护来解决,即使体系结构、工具链或特定环境不支持它们。
3、所有任务都假设了一个动态链接的libc和已知的二进制文件。
4、所有的ROP链都必须手动构造。
任务
建议的方法
1、01-local-overflow:溢出buffeer,并重写x的值。
2、02-overwrite-ret:使用not_called()的地址重写堆中任意的返回地址。
3、03one-gadget:跳转到一个one_gadget地址,确保满足特定的条件,对于某些架构,可能需要使用到ROP链。
4、04-shellcode-static:在栈中分配一个shellcode,并启动/bin/sh。
5、05-shellcode-dynamic:跟之前的任务一样,但这里的栈地址是未知的。
6、06-system-rop:组成一个ROP链来执行system("/bin/sh")。
7、07-execve-rop:组成一个ROP链并通过syscall执行execve("/bin/sh",NULL, NULL)
8、08-overwrite-global:组成一个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-essential
sudo apt-get install gcc-arm-linux-gnueabihf gcc-aarch74-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
构建代码:
./build.sh
使用pip安装pwntools和ropper:
pip install --user pwntools ropper
为QWMU和pwntools安装qemu-binfmt:
sudo mkdir /etc/qemu-binfmt
sudo ln -s /usr/arm-linux-gnueabihf/ /etc/qemu-binfmt/arm
sudo ln -s /usr/aarch74-linux-gnu /etc/qemu-binfmt/aarch74
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
关于“Linux二进制漏洞利用开发任务的示例分析”就介绍到这了,更多相关内容可以搜索创新互联以前的文章,希望能够帮助大家答疑解惑,请多多支持创新互联网站!
当前题目:Linux二进制漏洞利用开发任务的示例分析
文章路径:http://ybzwz.com/article/joogsg.html