PWN入门之二:配置PWN环境
文章参考:CTFWiki
0x00 前言
现在的CTF-PWN以Linux下的用户态Pwn为主,更准确的说,是以Ubuntu这个Linux发行版的环境为主。因此,为了方便调试程序,我们需要不同版本的Ubuntu,因为有些漏洞只有再特定版本下才能触发,但是为每一个Ubuntu版本都配置一个拥有Pwn环境的虚拟机确实是不太现实,是安装虚拟机和配置环境非常消耗时间,而且每个虚拟机最少需要20GB的储存空间,最少2GB内存,如果这样操作,在我们打比赛的时候,最少也需要开3个虚拟机,两个版本的Ubuntu,一个kali(因为正经比赛不可能只做一个方向的题),再加上物理机上的windows系统,除非你的电脑是神机,否则可定吃不消,所以这里推荐只需要装一个kali虚拟机,在kali中安装pwn环境。
传统 CTF-Pwn 题目通常仅需要以下工具便能完成解题:
- IDA:对题目进行逆向分析
- Python + pwntools:用于编写漏洞利用脚本。
- gdb + pwndbg/peda:用于调试题目二进制文件。
需要注意的是,在初学阶段我们并不推荐任何基于 pwntools 进行过度二次包装的软件包,也不推荐你在利用脚本中使用 lambda 语句进行过度简化,我们更推荐你在学习到一定程度后再去根据个人使用习惯进行决定。
下面,我们从物理机上的配置出发,一步一步,手把手教你配置Pwn环境。
0x01 IDA的安装
![]()
噫!礼赞逆位之女神,为吾等撕开混沌之帷幕,令凡胎得窥深渊底层不可名状之真理。
IDA的安装和其他Windows上的软件安装并没有什么不同,但是这玩意是付费的,所以我们这里安装的是绿色学习版,如果你有下载和安装学习版游戏的经验,这一步非常简单。
下载链接
关于IDA的基础使用方法,详见此处应该补充一条链接,如果没有补充,请联系我
0x02 VM虚拟机的安装
M之前是需要付费的,不过被博通收购之后就成免费的了,不过有一点不好就是虚拟机的vmtools需要手动安装,不过这点我们不需要考虑,Kali Linux 自2019.3版本起,在安装过程中如果检测到运行在VMware虚拟机中,会自动安装open-vm-tools及open-vm-tools-desktop软件包以替代VMware Tools增强虚拟机功能。
下载链接
百度网盘提取码NBAL

下载好后解压,如果你不会7z格式压缩文件的解压的话,请自行必应。

详细的安装方法请见VMware17超详细安装方法
0x03 Kali Linux的安装
这将是你们学习网安的第一道坎,如果你不会解压的话另当别论,安装虚拟机比较耗费时间,所以建议你专门找出一段空闲的时间来干这个。
详细安装步骤
1、下载kali镜像
下载链接:kali.org
进去之后就会有一个大大的**DOWNLOAD**摆在你眼前,点击它,来到选择镜像的页面。
我们选择这个选项

一共有两种下载方式,选择适合自己的方式,推荐**BT种子下载(磁力下载)**

下载好后是一个.iso文件
2、在虚拟机上安装kali Linux
打开我们的VMware
点击创建虚拟机

点击自定义,然后点击下一步

硬件兼容性选择Workstation 17.5 or later,然后点击下一步
选择稍后安装操作系统

客户机系统选择**Linux,版本选择Debian 12.x 64位**
虚拟机名称随便起,位置最好选择D盘(如果你有)

处理器配置如下

内存分配8GB

网络连接方式选择NAT

I/O控制器类型选择**LSI Logic**

虚拟磁盘类型选择**SCSI**

最大磁盘大小最好50GB以上

直接下一步
然后点击完成,这样虚拟机的壳子我们就搭建好来,下面来安装系统。
在虚拟机的侧边栏可以看到虚拟机的配置,我们双击**CD/DVD**,之后选择使用ISO映像文件,选择刚刚下载的.iso文件

然后开启此虚拟机
选择第一个安装方式,按回车
在选择语言界面,选择English,因为英语环境下kali的安装成功率高,中文环境很容易报错

后面的选项不用管,直接continu两步,完成语言选择,进入一个加载页面,等待加载完成
设置主机名,注意,主机名不等于用户名,这里相当于给虚拟机起个名字
设置域名,改成空,就是里面不写任何东西

输入的全名,也就是真名(woc,盒),用于标识用户,不过咱也就是学学网安,打打比赛,这里填用户名就行了

输入用户名

输入密码,简单一点,方便使用

使用区域和时间

格式化磁盘,选择使用整个磁盘




选择Yes

然后是一段短暂的安装。这里默认就好

然后就是一段漫长的安装,耐心等待。
这里选择yes

这里选择/dev/sda
选择continue重启虚拟机

这样我们的虚拟机就安装好了,搞完这些,你可以去喝杯水,休息一下,因为后面还有很长一段路要走。
0x04 配置Kali Linux
刚安装好的kali看起来非常不友善,所以我们需要进一步配置,让它变得好用一点。
1、设置kali终端字体
快捷键CTRL+ALT+T打开终端(记住这个快捷键,很常用)。可以看到,字体非常小,所以我们来让它变大一点。
在右上角,找到File选项卡,找到里面的Preferences选项,中文名叫“首选项”,这个名称在很多软件中是通用的,举一反三。

然后Font那一栏找到Change,然后将Size改成18,Font用来改字体,你也可以改成自己喜欢的字体

改完之后就好看多了。
2、换源和更新系统
这是国内所有Linux发行版安装后的必备操作了,因为大部分Linux发行版的软件源都位于国外,所以访问时间较长,速度减慢(尤其校园网),所以我们就需要把软件源换成国内的,这样在更新系统和后续安装软件的过程中,速度会更快。
先来给root用户换个密码,因为后面很多安装操作基于root权限操作,我觉得老是需要打一个
sudo很麻烦,不如直接su到root用户安装的爽。
输入如下命令切换到root用户,密码就是你的密码。注意:这是在终端中操作,终端中的粘贴快捷键是
CTRL+SHIFT+V,复制同理。注意:密码不会回显,并不是虚拟机没有读取输入 ,也不是你的键盘有问题。
1
sudo su
看到命令提示符从
$变成#就是成功了然后再输入下面的命令,回车
1
passwd
注意!,和上面一样,读取密码的时候是不会有回显的。
一般改成
toor就行了,好记。有passwd: password updated successfully这样的提示就是改好了。然后输入
exit退出root用户,在普通用户下输入如下指令,在输入你设置的root密码,看看有没有能不能登录上,要是不行,就重复上面的步骤,重新设置一下。1
su
上一步验证完不要着急退出,在
root用户下,输入如下命令1
cp /etc/apt/sources.list /etc/apt/sourcesinit
把原来用来放软件源的文件复制并改名。
然后用如下命令打开
sources.list1
vim /etc/apt/sources.list
之后一直按
D键把原来的软件源都删掉,然后把下面的软件源复制进去1
2
3
4
5
6中科大Kali镜像源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free non-free-firmware contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free non-free-firmware contrib
阿里云Kali镜像源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free non-free-firmware contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free non-free-firmware contrib然后输入,一定是输入
:,不是按这个键,然后输入wq退出。换完源之后输入如下命令进行系统更新
1
apt-get update;apt-get upgrade -y;apt-get dist-upgrade
又是一段漫长的等待。
然后清理缓存包
1
apt-get clean && apt-get autoclean
3、更改系统语言和安装输入法
很多人倡议使用英文界面,但是对刚开始学习网安且过去12学习的都是应试英语的我们,英文界面还是不太友好,所以这里我们把kali的系统语言改为中文,减轻一点学习上的负担。
切换到
root用户,输入如下命令1
dpkg-reconfigure locales
会进入到如下页面

上下键移动,移到最底部,找到
zh_CN.UTF-8,空格选择,然后回车。下面来到这样的页面,依旧选择
zh_CN.UTF-8然后回车
然后输入
reboot重启重启之后可以看到我们的登陆界面就变成中文的了,登录之后,你会收到这样的提醒

勾选“不要再次询问我”,并且**保留旧的名称**,不要用中文,用中文的话到时候使用命令行打文件路径的时候会很麻烦,这几个单词还是挺常见的,不用换。
下面我们来安装中文输入法,平常也用不着,安装它也就是给脚本写写注释。
输入下面的命令安装fcitx5输入法1
apt install fcitx5 fcitx5-pinyin
安装完
reboot重启一下。重启完点开左上角的开始菜单,搜索fcitx5,找到
fcitx5配置,可以看到里面有拼音的选项

- 然后我们打开全局配置,可以看到它的快捷键。
0x05 配置pwn环境(kali)
我在文章中写了两个版本,一个是常规的一步一步安装,另一个就是使用docker一键部署的版本。虽然写了两个,但是,docker那个版本非常难用,我依旧保留它的原因是我认为这个方法可能会对某些人有用。如果你是一名刚刚入门的新手,千万不要选择docker,它的配置会让你抓狂。
1、安装pwntools
如果你之前有使用python的经验,你可能会习惯性的使用pip,但是这在kali里面是禁止的,他会给你跳一个警告:
1 | error: externally-managed-environment |
但是没事,它的意思只是告诉你去使用官方提供的python包。
使用如下命令安装:
1 | sudo apt install python3-pwntools |
验证安装:
1 | python |
然后输入如下内容回车,若没有任何报错或者输出,则安装成功
1 | import pwn |

2、安装one_gadget && seccomp-tools
1 | gem install one_gadget seccomp-tools |
1 | echo 'export PATH="$HOME/.local/share/gem/ruby/3.3.0/bin:$PATH"' >> ~/.zshrc |
3、安装pwndbg(非常重要!!!)
这一步建议使用科学上网,虽然最近国内放开了对github的访问限制,但是访问还是不太稳定,建议使用科学上网。
使用这条命令创建一个专门存放工具的文件夹,然后切换到这文件夹。
1 | cd && mkdir ctftools |
1 | cd ctftools |
然后克隆这个pwndbg这个项目。
1 | git clone https://github.com/pwndbg/pwndbg.git |
切换到pwndbg目录下
1 | cd pwndbg |
运行安装脚本
1 | ./setup.sh |
等待其安装完成后,如果下的太慢可以ctrl+c打断,然后重新执行上面的命令。
验证安装
1 | gdb |
出现以下画面就证明安装完成。

这里非常不建议安装peda这个插件,手下是应为pwndbg这个插件功能非常健全,其次就是peda已经许多年不维护了。
4、安装main_arena_offset
首先切换到root用户
执行下面的命令
1 | sudo git clone https://github.com/bash-c/main_arena_offset.git /tmp/main_arena_offset_src && \ |
5、安装patchelf和glibc_all_in_one
patchelf是用来更换ELF文件的依赖的,因为有些题目中的漏洞只能在特定版本的libc下才能触发。glibc_all_in_one则是用来下载不同版本libc的工具。
确保你在普通用户而不在root用户
1 | sudo apt install -y patchelf |
1 | cd ~/ctftools/ |
1 | git clone https://github.com/matrix1001/glibc-all-in-one.git |