从零开始搭建Ubuntu CTF-pwn环境

这篇具有很好参考价值的文章主要介绍了从零开始搭建Ubuntu CTF-pwn环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近因为学校考试所以没怎么看pwn,但是中间虚拟机崩掉过,问题还挺严重。前几天发现能正常打开了,但是一用gdb就会出现下面让人窒息的提醒:
pwndbg安装,PWN学习笔记,学习,pwn,安全
怎么调都不知道是怎么回事,很奇怪的是只有在开gdb的时候才会弹出这个错误,其他都是正常的。问过师傅时候无奈只能放弃这个与我并肩作战这么长时间的ubuntu 20.04,重装一个虚拟机。一不做二不休,干脆就将整个过程记录下来,便于日后查询。(最后有本人的CTF学习路线总结)

虚拟机日常维护注意事项

在最新的VMware中对虚拟机有一个保护选项,可以在指定时间间隔内保存一个快照,这样在虚拟机崩溃的时候能够快速回档到前两天的快照中,有效减少文件等的损失,而不必每次都手动保存快照。(有读者可能会怀疑为什么我不能对崩掉的虚拟机回档,实际上我做了尝试,但是上面的问题还是存在,这就不是虚拟机状态的问题了,而是某些底层硬件配置的问题,可能是硬件出问题导致调试无法进行,但具体的我也不知道应该如何处理,因此只能重装)
pwndbg安装,PWN学习笔记,学习,pwn,安全
如上图所示,在虚拟机设置->选项中可以找到自动保护选项,根据你设置的保护间隔和最大自动保护快照数量可以计算出至少需要的磁盘空间,因此需要保证有足够的磁盘空间

另外,当虚拟机存在快照时,是不能扩充磁盘容量的,因此要想扩充虚拟机的虚拟磁盘,要么在创建虚拟机时就分配足够大小的磁盘空间,要么就只能删除所有的快照后再进行扩充(建议前者,因为有的快照删除特别慢,如果快照多的话可能要等很长时间)

从零搭建环境

下面就将介绍如何从零搭建一个CTF-pwn环境(由于学习仍在进行,故一些环境如远程执行环境还没有搭建的经历,如今后需要搭建,会在最后进行补充)

1. 创建虚拟机

可以在ubuntu官方网站上下载最新的长期支持版本,在笔者写这篇文章的时候,这个版本已经是22.04了,但还是按照20.04的版本来安装。22.04下载/历史版本下载

pwndbg安装,PWN学习笔记,学习,pwn,安全
下载的是光盘映像文件,将其放在虚拟机的工作目录中。

然后选择vmware上方工具栏的文件->新建虚拟机,打开新建虚拟机向导。如下:
pwndbg安装,PWN学习笔记,学习,pwn,安全
选择自定义安装,点击下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
硬件兼容性不需要改,一般默认选择最新的vmware版本兼容,你的vmware是什么版本就用什么版本,不用修改,直接点击下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
选择安装程序光盘映像文件,点击浏览,选择你刚才下载的映像文件,然后点击下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
输入全名(这个随便输,想输什么都行),以及你登录虚拟机的用户名和密码。之后点击下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
输入虚拟机的名字,将位置浏览设置为你的虚拟机工作目录。

pwndbg安装,PWN学习笔记,学习,pwn,安全
处理器数量选择。如果你的电脑配置很好而且虚拟机也需要一定的计算需要,可以设置多一些,内核数量不变,修改处理器数量。但是总数不能超过你电脑主机的内核数量。我一般选择8处理器。

pwndbg安装,PWN学习笔记,学习,pwn,安全
内存大小设置。同样看主机的配置。最好不要超过主机的内存大小,否则虚拟机可能会变慢。对于pwn做题来说4GB一般就足够了。

pwndbg安装,PWN学习笔记,学习,pwn,安全
网络选择。这个网络的选择可以在虚拟机创建之后随时修改,这里简单介绍一下最常用的前两种:桥接网络和NAT。桥接网络如上面所说,直接访问外部以太网,前提是虚拟机要有自己的IP地址,因此桥接网络在使用的时候大多都是勾选“与主机共用IP地址”这个选项(这个选项在创建虚拟机到这一步的时候没有显示,但是可以在上方工具栏虚拟机->设置中找到并勾选,后面再说)。某些学校的校园网可能有接入设备数量限制(笔者学校就是),这个时候虚拟机选择桥接网络可能无法联网,可以考虑使用NAT模式,在这个模式下,主机相当于一个网关,而虚拟机为网关下的机器,与外部以太网连接需要借助主机。这种模式可以有效克服上面说的校园网接入数量限制问题。
因此这里选择默认NAT,最好能够保证开机之后立刻联网呃,因为需要下载一些包,安装完成之后也能改。以默认NAT进行下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
IO控制器类型,不用改直接下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
磁盘类型也不用改,直接下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
磁盘类型不用改,下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
磁盘空间设置这里,除了最大磁盘大小之外其他都不要改。为了避免出现磁盘空间不足的问题,笔者这里设置为200GB。这个大小根据自己的物理磁盘空间决定,但是不要太小,建议pwner们不要小于60GB,后面做kernel pwn搭建环境可能很占空间的。

pwndbg安装,PWN学习笔记,学习,pwn,安全
磁盘文件,不用改直接下一步。

pwndbg安装,PWN学习笔记,学习,pwn,安全
上面是最后确认的界面,确定好虚拟机的配置后,点击完成就可以开始创建虚拟机了。

pwndbg安装,PWN学习笔记,学习,pwn,安全
之后是自动开机安装过程,耐心等待一段时间…

pwndbg安装,PWN学习笔记,学习,pwn,安全
大约10分钟之后,我们就能够登录ubuntu系统了。

pwndbg安装,PWN学习笔记,学习,pwn,安全
在笔者的vmware中,linux系统在安装的时候就已经安装了VMware Tools,它能够帮助你更加快捷地在主机和虚拟机中传递文件,只需拖动即可。但是笔者的虚拟机只能从打开的文件夹中拖动文件到主机,不能从桌面上直接拖动复制,从主机复制文件到虚拟机也是必须复制到打开的文件夹中。

自此,我们的ubuntu系统就成功搭建好了,下面进行一些配置使虚拟机能够更加轻松方便地使用。

2. 默认root权限设置

在做题的时候,如果我们能够直接以root的身份登录,就不需要输入n多次的密码了。

参考资料进行操作即可。根据步骤来,实测有效。

pwndbg安装,PWN学习笔记,学习,pwn,安全
注意正上方的提示,重启之后我们已经成功自动以root用户登录了,完成。

3. 安装vim

apt install vim即可

4. 修改软件源

ubuntu自带的软件源是国外的,速度慢有的时候还连不上,于是应修改为国内的镜像。

镜像与修改方法

笔者选择阿里云镜像。

修改完文件之后记得apt updateapt upgrade进行更新。第一次更新可能需要等一段时间,看你的网速怎么样…

5. 安装sublime-text(非必要)

使用系统自带的gedit没有补全功能,可以在ubuntu应用商店里面搜索sublime-text安装,打开py文件的时候右键选中“Open with other application”就可以使用sublime-text打开了。(这里图标显示不出来,但是安装没有问题)

pwndbg安装,PWN学习笔记,学习,pwn,安全

6. 安装pwntools

pwntools是pwn最常用的一个python包。
首先需要安装pip:apt install python3-pip
然后安装pwntools:pip install pwntools
完成。

7. 安装pwndbg

pwndbg是gdb的插件,帮助我们在做题时进行调试。
首先安装git:apt install git
然后拉取git库:git clone https://github.com/pwndbg/pwndbg
进入pwndbg目录运行bash脚本setup.sh即开始安装

pwndbg安装,PWN学习笔记,学习,pwn,安全
运行gdb下有pwndbg标识即表示安装成功。

8. 安装LibcSearcher

请参考资料

注意不要使用pip install LibcSearcher,这两个是不一样的,链接中的是国人写的,准确度相对高一些。

9. 安装checksec

请参考资料

到这一步完成之后,一般的pwn题就可以开始做了。如果需要kernel环境,则继续下面的步骤。

10. 安装qemu

使用apt list qemu*可查看所有前缀为qemu的包。可以看到这里有很多支持不同架构的qemu。
pwndbg安装,PWN学习笔记,学习,pwn,安全
根据自己的需要安装对应架构的包即可。一般最为常用的是x86架构:apt install qemu-system-x86,注意不能只输入apt install qemu

11. 配置kernel pwn环境

较为复杂,这里给出笔者以前写的资料。
资料

12. 安装vmlinux-to-elf

这是一个用于将bzImage解压为vmlinux的工具,在kernel pwn中经常用到:

git clone https://github.com/marin-m/vmlinux-to-elf
cd vmlinux-to-elf
sudo python3 ./setup.py install

然后就可以使用vmlinux-to-elf命令进行解压了。

13. ARM pwn环境搭建

参考资料中的做法如下:

虽然说在x86-64的机器上无法直接运行ARM架构的elf文件,但我们可以通过qemu来实现。虽然可以使用docker在x86-64的机器上创建一个ARM架构的docker容器,但太过麻烦,在容器中还需要安装很多东西。因此可以直接使用qemu与gdb-multiarch配合。

实际上qemu不仅可以用来起一个qemu容器,还可以仅仅运行一个其他架构的elf文件,可以添加选项-g <端口号>将elf程序映射到某一个端口,而且还会等待接入,只有当我们使用gdb-multiarch接入时才会开始准备执行其中的第一条指令,非常方便我们下断点。

sudo apt install gdb-multiarch
sudo apt install qemu-user-static

如果要执行的文件名为./pwn,则使用qemu执行该ARM可执行文件的命令为:
qemu-arm-static -g 9999 -L . ./pwn
之后启动gdb-multiarch:
gdb-multiarch ./pwn
连接端口:
pwndbg> target remote 9999
即可开始调试。
如果想直接执行不调试,只需要删除qemu-arm-static中的-g选项即可。

pwn 学习路线推荐

下图就是笔者目前接触到的CTF pwn内容,当然不是CTF pwn的全部内容,建议按照绿色→黄色→红色的顺序学习CTF pwn。(目前还没有标注为红色的知识点,因为笔者认为自己的水平还不够)

本图片将持续更新。(图片在这里转存不了,链接)文章来源地址https://www.toymoban.com/news/detail-793282.html

到了这里,关于从零开始搭建Ubuntu CTF-pwn环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始配置pwn环境:sublime配置并解决pwn脚本报错问题

    Download - Sublime Text 用vscode鼠标右键调出命令平台  输入 convert indentation to Tabs,保存文件  完美解决,具体如下:

    2024年01月22日
    浏览(45)
  • 【深度学习1】ubuntu22.04从零开始搭建深度学习环境

    具体安装步骤可以参考:win11+ubuntu22.04双系统安装(简洁版) 安装之前进入主板BIOS,关闭安全启动!!! 更新软件列表 安装必要的依赖 根据显卡型号下载对应的驱动,官方驱动下载链接:GeForce® 驱动程序 卸载原有驱动(若有) 禁用nouveau驱动,在 /etc/modprobe.d/blacklist.conf

    2024年02月05日
    浏览(97)
  • Windows 11 上从零开始基于 wsl-ubuntu 搭建 AI 学习环境及部署多种私有 ChatGPT

    今天(2023/6/2)刚刚换了 1 块 4TB 的硬盘,在 Windows 11 上从零开始,基于 Windows Subsystem for Linux 搭建一套 AI 学习环境。 其中包括,安装 Python、安装 Miniconda3、安装 CUDA Toolkit、安装 git lfs、配置 Hugging Face 的缓存路径、本地部署 ChatGLM-6B、本地部署 VisualGLM-6B等等内容。 安装 Ubuntu-

    2024年02月07日
    浏览(58)
  • PWN工具之pwndbg

    pwndbg是一个用于GDB的插件,旨在帮助进行漏洞利用和CTF挑战的动态调试工具。它提供了一系列的功能和命令,可以帮助我们更方便地进行动态调试。同时,pwndbg也是一个开源工具,可以在GitHub上找到并自由使用。 pwndbg插件可以通过GitHub下载和安装。首先,需要将插件克隆到本

    2024年02月07日
    浏览(35)
  • 从零开始搭建STM32CubeMX开发环境

    本文记录一下如何从零开始使用STM32CubeMX,包括软件的安装,环境的搭建,配置代码的生成等; 本文以STM32G030C8T6为例,如果你的单片机不是以STM32G030C8T6为例,换成你的单片机类型即可,过程都是通用的; STM32CubeMX 是意法半导体推出的针对STM32 系列芯片的图形化配置工具,通

    2024年02月12日
    浏览(53)
  • 从零开始学习CTF

    CTF简介 中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式: 在解题模式CTF赛制中,参赛队伍可以通过互联网

    2024年02月15日
    浏览(44)
  • Spring Cloud--从零开始搭建微服务基础环境【三】

    😀前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【三】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客

    2024年02月09日
    浏览(42)
  • Spring Cloud--从零开始搭建微服务基础环境【四】

    😀前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客

    2024年02月09日
    浏览(47)
  • linux系统从零开始搭建CICD jenkins环境

    本文教你从零开始搭建jenkins环境,开始你的CICD之旅。 1.1 系统与安装环境 本文的环境为云服务器环境,系统为linux Red-hat系统。版本信息如下: Linux version 3.10.0-1160.88.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP 如果是linux其它系统,也

    2024年02月04日
    浏览(55)
  • Spring Cloud--从零开始搭建微服务基础环境【二】

    😀前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【二】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包