CTF-pwn-Ubuntu2404-环境搭建
0 温馨提醒
温馨提醒,需要科学上网,且提前在主机上配置好虚拟机的VPN(最简单的是TUN模式)
提前在windows电脑上安装tabby用于ssh连接
1 ubuntu
下载好ubuntu镜像后直接在vmware中傻瓜式安装,建议设置一个CPU八个核心,不要设置多个CPU
0x1 vmtools
sudo apt install open-vm-tools-desktop
安装vmtools
第一次安装完vmtools需要重启,不然可能复制粘贴等一些功能无法使用
0x2 设置不息屏
在电源设置里设置从不息屏
0x3 一部分环境依赖
安装开发环境(后面软件的依赖)
1 | sudo apt update |
安装了fish后可以切换为fish
用vim打开~/.bashrc,翻到最下面,按I进入编辑模式,在~/.bashrc的末尾加上fish
按ESC退出编辑模式,按下:后输入wq,保存更改并退出,w表示保存,q表示退出
然后重启终端即可
0x4 neovim
安装neovim
1 | curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage |

0x5 Nerd Fonts
安装nerd fonts
在ubuntu内部打开https://www.nerdfonts.com/font-downloads
在此处寻找喜欢的字体并下载
解压后安装字体,mono表示等宽,安装mono版本即可,bold是加粗,italic是斜体,regular是通用,都安装。
在字体所在文件夹打开终端,输入cp ./CodeNewRomanNerdFontMono-* ~/.local/share/fonts/CodeNewRomanNerdFontMono-*是字体名,*是通配符
然后刷新缓存fc-cache -fv
看见我们刚刚放入字体的文件夹有新增内容,接下来更换字体进行验证
右键选择配置文件首选项
勾选自定义字体后发现刚刚下载的字体存在,说明安装成功,切换到该字体。
0x6 NvChad
安装NvChad(Lazyvim也可以,但是这里试试NvChad)
https://nvchad.com/docs/quickstart/install
直接git clonegit clone https://github.com/NvChad/starter ~/.config/nvim && nvim
出现广告按q关掉
然后删掉.git文件夹rm -rf ~/.config/nvim/.git/
输入nvim,后按空格后按t和h出现选择主题界面
选择喜欢的主题
NvChad 默认禁用了 vimtutor,为了开启它,需要进入 Neovim 配置文件夹~/.config/nvim,然后用文本编辑器打开 lua/configs/lazy.lua 文件,找到 "tutor", 这一行,并在这一行前面加上 -- 把它注释掉。
然后打开nvim,输入:Tutor就可以学习nvim的操作了
按下 空格+e 组合键打开文件浏览器侧边栏(这实际上基于 Nvim-tree 插件),通过键盘上的 j k Enter 几个按键来浏览和打开文件,通过Ctrl+h/j/k/l在上下左右的窗口之间切换焦点
按alt h和alt v打开内置终端,ctrl x光标焦点离开终端
常用功能
更多的可以看这篇教学
https://zhuanlan.zhihu.com/p/712125953
0x7 ssh连接
配置ssh
安装openssh-serversudo apt install openssh-server
启动ssh服务sudo systemctl enable --now ssh
输入ip addr查看自己的ip
然后就可以用ssh连接了
0x8 docker
1 | sudo apt update |
将docker的源添加到apt列表中
1 | curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
然后更新一下源,进行安装
1 | sudo apt update |
建立docker用户组,方便使用docker时不用加sudo
1 | sudo groupadd docker |
然后重启,打开终端,输入以下指令
1 | groups |
未报错且出现Hello from Docker则为安装成功
2 工具安装
0x1 ida pro
安装ida pro
通过ssh连接的sftp功能将ida pro安装包传入ubuntu
在终端给予执行权限后安装
(建议创建好几个文件夹进行分类,不然后期东西多了会很乱)
安装完后在软件中心可以看见ida了
右键将其固定到快捷栏
接下来安装nodejs
1 | # 下载并安装 nvm: |
在bash环境下(在fish下按ctrl + d退出fish)执行nvm install 24
安装好后将keygen.js移到刚刚安装ida时所选择的目录
切换到该目录,确保keygen存在
输入node 93keygen.js执行破解程序
启动ida pro检查是否成功,点开new后没有提醒输入密钥就是成功了
0x2 pwntools
pwntools用pip安装,版本更新
1 | pip install pwntools --break-system-packages |
如果不加后面这串则会报错,原因是默认不让破坏系统的python环境,但是我们这是虚拟机所以无所谓。
关于pwntools的学习可以前往
https://github.com/Gallopsled/pwntools-tutorial/
0x3 pwndbg
安装pwndbg,注意指令执行时所在的文件夹
1 | git clone https://github.com/pwndbg/pwndbg |
时间可能有点久,主要是网络问题,等待一会
安装后按照提示,在~/.gdbinit中加入source /home/a4/0x1.Tools/pwndbg/gdbinit.py,具体路径根据你们的安装路径来更改

(如果提示权限不够可能是前面setup.sh用root权限执行了,输入sudo chown -R $USER:$USER /home/a4/0x1.Tools/pwndbg更改权限为用户权限即可,路径根据实际路径更改
输入gdb进入后显示了pwndbg就是成功了
0x4 patchelf
接下来是patchelf,依旧注意指令执行时所在的文件夹git clone https://github.com/NixOS/patchelf.git
1 | cd ./patchelf |

输入patchelf显示如下则是安装成功
0x5 glibc-all-in-one
一个很老的项目,当你需要patchelf时会用上
1 | git clone https://github.com/matrix1001/glibc-all-in-one.git |

下载好的glibc会在该目录下的libs文件夹中
0x6 ROPgadget
保护眼睛,让脚本帮你找gadget
1 | pip install ROPgadget --break-system-packages |

如果你也出现和我一样的问题,是因为pip将可执行文件安装到了用户目录(~/.local/bin),但该目录不在环境变量$PATH中。
我们将~/.local/bin加入到$PATH中即可
1 | # 由于我们使用的是fish,所以 |


0x7 one_gadget
当只能执行一个gadget时,也许会有奇效
1 | sudo apt install ruby-rubygems |

0x8 libcsearcher
当题目没给libc,而你又懒得去找对应libc时可以用它
1 | # clone this repo |
需要等待一段时间(挺长的,建议用wifi,但是校园网很慢的话。。。那就会更慢了)
安装完毕
0x9 seccomp-tools
检查程序是否有沙盒保护,以及保护的是什么(听说有的时候会不准?)
1 | sudo apt install gcc ruby-dev make |

自此x86架构下的用户态pwn环境配置完毕
