PWN入门之二:配置PWN环境
PWN入门之二:配置PWN环境
文章参考:CTFWiki
0x00 前言
现在的CTF-PWN以Linux下的用户态Pwn为主,更准确的说,是以Ubuntu这个Linux发行版的环境为主。因此,为了方便调试程序,我们需要不同版本的Ubuntu,因为有些漏洞只有再特定版本下才能触发,但是为每一个Ubuntu版本都配置一个拥有Pwn环境的虚拟机确实是不太现实,是安装虚拟机和配置环境非常消耗时间,而且每个虚拟机最少需要20GB的储存空间,最少2GB内存,如果这样操作,在我们打比赛的时候,最少也需要开3个虚拟机,两个版本的Ubuntu,一个kali(因为正经比赛不可能只做一个方向的题),再加上物理机上的windows系统,除非你的电脑是神机,否则可定吃不消,所以这里推荐只需要装一个kali虚拟机,然后在kali上安装docker
,并依靠docker来搭建Pwn做题环境,这样做的好处就是节省开销,并且切换丝滑。
传统 CTF-Pwn 题目通常仅需要以下工具便能完成解题:
- IDA:对题目进行逆向分析
- Python + pwntools:用于编写漏洞利用脚本。
- gdb + pwndbg/peda:用于调试题目二进制文件。
需要注意的是,在初学阶段我们并不推荐任何基于 pwntools 进行过度二次包装的软件包,也不推荐你在利用脚本中使用 lambda 语句进行过度简化,我们更推荐你在学习到一定程度后再去根据个人使用习惯进行决定。
下面,我们从物理机上的配置出发,一步一步,手把手教你配置Pwn环境。
0x01 IDA的安装
噫!礼赞逆位之女神,为吾等撕开混沌之帷幕,令凡胎得窥深渊底层不可名状之真理。
IDA的安装和其他Windows上的软件安装并没有什么不同,但是这玩意是付费的,所以我们这里安装的是绿色学习版,如果你有下载和安装学习版游戏的经验,这一步非常简单。
下载链接
关于IDA的基础使用方法,详见此处应该补充一条链接,如果没有补充,请联系我
0x02 VM虚拟机的安装
VM之前是需要付费的,不过被博通收购之后就成免费的了,不过有一点不好就是虚拟机的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
**摆在你眼前,点击它,来到选择镜像的页面。
我们选择这个选项
一共有两种下载方式,选择适合自己的方式,推荐**磁力下载
**
下载好后是一个.iso文件
2、在虚拟机上安装kali Linux
打开我们的VMware
点击创建虚拟机
点击自定义,然后点击下一步
硬件兼容性选择Workstation 17.5 or later
,然后点击下一步
选择稍后安装操作系统
客户机系统选择**Linux
,版本选择Debian 12.x 64位
**
虚拟机名称随便起,位置最好选择D盘(如果你有)
处理器配置如下
内存分配8GB
网络连接方式选择NAT
I/O控制器类型选择**LSI Logic
**
虚拟磁盘类型选择**SCSI
**
选择创建新的虚拟磁盘
最大磁盘大小最好50GB以上,因为光kali Linux系统就需要23GB左右,后续构建Pwn环境镜像,一个镜像3~4个G,硬盘太小装不下。然后将虚拟硬盘储存为单个文件
直接下一步
然后点击完成,这样虚拟机的壳子我们就搭建好来,下面来安装系统。
在虚拟机的侧边栏可以看到虚拟机的配置,我们双击**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.list
1
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配置
,可以看到里面有拼音的选项然后我们打开全局配置,可以看到它的快捷键。
4、安装docker
安装docker
先切换到root用户
输入如下命令安装docker1
apt install -y docker.io
安装好之后使用如下命令开启docker,这次开启之后以后就会自动开启。
1
systemctl enable docker --now
然后输入如下命令,如果输出一大串帮助提示,那就是安装好了
1
docker
添加你的用户到docker用户组
安装好docker以后,只有root用户才能使用docker相关的命令,这样非常不方便,我们把我们的用户添加到用户组,方便使用。1
usermod -aG docker $USER
5、创建镜像和容器
注意:这里的所有操作,要挂梯子完成。
现在我们在主文件夹下创建一个Dockerfiles文件夹,再在该文件夹下创建一个22.04文件夹,然后在22.04文件夹下创建一个文件,不需要任何后缀,就叫Dockerfile,容纳后把下面的内容复制到该文件内。
1 |
|
随后,运行如下指令,这一步会花费很长时间。
1 |
|
其实我原本打算吧Ubuntu16和18的Dockerfile也放上来,但是这个两个版本的问题就是系统太老了,网络上的Dockerfile大多都不能用,自己写的还有点小问题,所以打算等我搞好了再放上来。
完成之后你便拥有了一个名为 pwnenv_ubuntu24
的带有做题环境的 Ubuntu24 镜像,可以通过 如下命令查看:
1 |
|
终端输出如下
1 |
|
下面我们根据构建好的容器来创建容器
我们先做些准备工作,在桌面创建一个名叫CTF的文件夹,但是注意,创建时一定要退出root用户,然后用自己的用户创建。然后运行如下命令
1 |
|
个参数说明如下:
-d
: 使容器在后台运行-p 25000:22
: 容器的22
端口映射到本地的25000
端口--name=pwn24
: 容器名为pwn24
-v ~/Desktop/CTF:/CTF
: 将本地的~/Desktop/CTF
目录映射到容器中的/CTF
目录,这样我们便能在容器内访问到本地文件,而无需将文件重复拷贝进容器中- `pwnenv_ubuntu22:创建容器所使用的镜像
- 其他的参数是用来将 Docker 容器接入本地图形界面,便于GDB调试。
之后在运行 gdb.attach()
之前运行如下 python 语句进行配置
1 |
|
然后我们通过ssh链接容器
1 |
|
输入命令后会询问你是否记忆该连接(大概),输入yes就行,然后再输入Dockerfile中配置的密码123456
就可以连接了。
输入exit
退出ssh连接。
6、安装和配置VScode
这一步我也是一边配一边写,所以写的并不好,还请各位师傅海涵,在配置好用的做题环境上,我也在摸索,如果您有更好的解决方法,请您联系我。
下载VScode,在kali自带的浏览器里面搜索VScode就行,下载.deb文件
在下载好之后,一般在
Download
目录,输入如下命令安装1
dpkg -i [你刚刚下好的文件]
打开之后是英文界面,我们需要切换到中文,我们需要在左侧边栏点击倒数第二个图标,然后在其新打开的窗口处的顶部(不是整个界面的最顶部)的搜索栏输入
chinese
,第一个就是,然后点击Install
,安装完重启,重启之后就是中文界面了。安装Remote - Containers扩展,在顶部搜索ms-vscode-remote.remote-containers,第一个就是,安装。
安装好之后点击整个界面左下角类似于
><
的图标,然后在顶部点击附加到正在运行的容器
,之后,VScode就成功的连接上容器,并且可以使用里面的库。关于字体,装在虚拟机里的VScode不太好看,下面来设置一下,点击左下角的齿轮图标,然后点击设置,然后在
文本编辑器
选项中选择字体选项
,VScode不像其它软件,可以一个一个选字体,它只能手动输入,我们先安装一下字体1
2
3
4
5
6
7apt-get install -y --no-install-recommends \
fonts-hack \
fonts-hack-ttf \
fonts-hack-web && \
rm -rf /var/lib/apt/lists/*
fc-cache -fv然后再把字体那栏下面的Font Family的输入框内输入
1
'Hack', 'Fira Code', 'Consolas', 'Courier New', monospace
然后再将下面的字体大小改成20或者你看着舒服的大小。
把用户,远程和工作区的这些选项都改了。
关于界面,有的电脑的虚拟机上VScode界面会特别小,我们依旧在设置中,搜索
zoom level
,然后把0改成1,就差不多了,如果还是小,那就再往大调调。