环境配置-不仅仅于PWN
{(2023新增)文中许多工具已经成为过去,可以参考pwn训练营-1-工具专题学习更加实用的工具}
含有重复造轮子成分,不过开心最重要,生活不只眼前的学习,还有折腾与远方。本文采用虚拟机为vmware workstation。阅读的时候注意边栏的目录,避免错过内容。
序
文档目的声明
在虚拟机没安装vmtools前无法从windows里复制粘贴文本到vmware中,因此在虚拟机中使用浏览器访问此网站即可解决问题。本文档让你复制粘贴从而加快配置的进度,但过程仍然可能出现问题,请百度/谷歌或问学长解决。(虽然可以有脚本一键配置,但本从0配置来体验Linux系统也是个不错的选择)
如果安装起来有什么疑问,可以加QQ2836924529
,或是发邮箱wangzenglong233@qq.com
总而言之,本文没法面面俱到,但是应该够用了,如果遇到问题先再仔细阅读本文档,如果仍然没解决,再去看我B站上传的视频,看看我是怎么操作的,如果视频也没法解决问题,请百度或直接私聊我(有空必回)。
阅读受众声明
本文默认读者已经能够使用VMware Workstation安装好Linux虚拟机,且了解一定的Linux下的bash命令或了解一定的Windows下的dos命令。
如果不具备,可以通过以下方案解决:
- 对于linux中bash的一些命令的意思,可以参考《ctf-all-in-one》一书中
1.3.LINUX基础
自行了解,书籍点此下载 - 在B站录制了本文档的安装简单展示,视频建议两倍速速刷,虽然没讲什么内容,但是在安装过程中简单的解释了一下命令的意思,B站视频点此进入,视频中手写的md文档,点此下载
(10.21)对于学弟或者对pwn感兴趣的网友们,新写了一个conf_初探二进制.pdf文件,点此下载,不是很详细因为主要是写给完全0基础的同学的。
适用版本声明
本文基于Ubuntu所书写,但适用的linux版本为Debian系的发行版,下为笔者安装过的系统:
- deepin 20社区版
- ubuntu 16.04
- ubuntu 18.04(Pop!OS18.04)
- Ubuntu 20.04
- ubuntu 22.04(Pop!OS22.04)
- Kali
第一次使用linux可以选择deepin20(最新版的deepin23安装要的空间太大了),开箱即用不用考虑换源,可跳过u换源这一步。
至于现在做题所用ubuntu版本的选择,可以选择20/22为主,首先如今的CTF考的都是glibc-2.31及以上的堆题了。在做ubuntu16的练习的时候,我们可以用patchelf换动态链接库,图省事就再装一个ubuntu16。另外老题目是否还值得花时间学习,不同人心里可能有不同的答案。开心与真正的落实学习才是最重要的。
至于kali,随便啦,想装就装。
pwn环境安装
列出了选装和必装,其中必装部分从0x0A开始可以等到接触到相关知识点了再安装。选装部分的0x02.vim,不喜欢的或不会用的也可自行安装vscode或其他文本编辑器。选装部分的0x03.zsh,配合oh-my-zsh项目能够让终端更加好看,其中kali默认shell即zsh,这个东西见仁见智,想装就装。
重点注意!!!!因GitHub可能会显示拒接访问等访问不上的情况,本来很容易的安装过程,可能会出现无法顺利安装的情况。此时可自行百度/谷歌修改Linux的host解决访问,或者询问学长其他解决方案。
ubuntu换源
- 切换root模式
1 | sudo su |
- 备份我们的apt源并拷贝阿里/清华源写入source.list
这里gnol3X_X已经将常用版本的ubuntu源都上传至服务器,因此直接下载最方便,选择适合自己版本的源复制粘贴命令
1 | ## ubuntu1604 选下面这四条 |
- 更新源内容
1 | apt update && apt full-upgrade |
- 安装vmtools,让我们窗口能够自适应我们的屏幕
1 | apt install open-vm-tools-desktop |
- 此时可以重启一下虚拟机,使vm-tools生效,从实现虚拟机与物理机的共享剪切板
1 | reboot |
Kali换源
- 切换root模式
1 | sudo su |
- 备份我们的apt源并拷贝阿里/清华源写入source.list
这里gnol3X_X已经将阿里源上传至服务器,虽然本人不怎么用kali,但应该没错
1 | ## Kali |
- 更新源内容
如果Kali不能正常更新请尝试reboot命令重启,如果重启后仍然存在问题,请私聊联系我
2836924529
,或是发邮箱wangzenglong233@qq.com
1 | apt update && apt full-upgrade |
- 安装vmtools,让我们窗口能够自适应我们的屏幕
1 | apt install open-vm-tools-desktop |
- 此时可以重启一下虚拟机,使vm-tools生效,从实现虚拟机与物理机的共享剪切板
1 | reboot |
安装常用build工具(必)
1 | sudo apt install build-essential gcc-multilib g++-multilib |
如果我们需要自己用64位系统编译一些32位程序,那么就需要安装build工具,实际上我们的pwn永远不只有做题,所以我建议安装上这个。
安装git(必)
git是一个版本控制系统程序,我们可以适用git clone来获取开源项目源码,编译得到开软件等操作。
1 | sudo apt install git |
设置git时候不检查ssl,因为有时候你开代理,他会说你无ssl证书
1 | git config --global https.sslverify "false" && git config --global http.sslverify "false" |
安装vim(选)
vim是一个很好用的终端文本编辑器,当然使用sublime或者vscode都是不错的选择,看个人喜好。sublime和vscode需要手动去官网下载deb安装包。相关网课可以看B站TheCW大佬的视频学习。
1 | sudo apt install vim |
简单配置一下vim,对于普通用户家目录就在/home/usrname下,如果是root用户,家就在/root。我们输入cd回车就会直达家目录。
1 | cd ~ |
(不安装插件已经可以跳过了)按需求下载一下vim的插件管理工具vim-plug。我们需要用到curl工具,我们先安装curl工具。
1 | sudo apt install curl |
curl安装完后安装vim-plug
1 | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ |
最后献上我随便装的几个插件的配置文件:
1 | cd ~ |
插件有如下几个:
1 | call plug#begin('~/.vim/plugged') |
安装插件很简单,进入.vimrc后在普通模式下输入:PlugInstall<CR>
就ok,但是不开代理的情况下可能下载比较慢,所以可以的话,学会使用科学上网很重要。
安装zsh(选)
相比于默认的bash,zsh更强大,且语法一致,如果不需要换,跳过本节
首先安装zsh
1 | sudo apt install zsh |
安装zsh主题库oh-my-zsh
1 | wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh |
设置zsh替代bash为默认shell(重点为第四行和第八行,是可以复制执行的)
1 | # 以root为例 |
设置完默认shell后重启一次虚拟机,重启后打开终端会自动生成一个.zshrc文件,修改ZSH_THEME='bira'
这个后面的字符串可以改主题大概是配置文件的第11行左右,主题有很多,可以自己去oh-my-zsh-wiki-theme中查看。bira,gallifrey,ys我觉得都很不错。
修改完配置文件后,重新加载配置文件:
1 | source .zshrc |
zsh更多插件安装,可以参考点击进入文章
小彩蛋:
1,2行如果你会使用clash,我们再讨论,不会就直接关注3-6行,使用apt安装neofetch与toilet,添加到你家目录下的.zshrc最后,退出终端重启,会看到不错的效果哦。
1 | alias proxy="export http_proxy=http://127.0.0.1:7890;export https_proxy=http://127.0.0.1:7890" |
安装python与pip(必)
python2-pip2
1 | sudo apt install python-pip |
python3-pip3
1 | sudo apt install python3-pip |
- 16.04的apt源里python3版本过低,pwntools用不了,适用python2做题即可。另外也因为这个原因,我们只能安装peda作为我们gdb的辅助插件。
pip换源
pip换源,在家目录下和/root目录下都建一个.pip文件夹,创建一个pip.conf文件
内容为:
1 | [global] |
其他的源地址
1 | 阿里云 http://mirrors.aliyun.com/pypi/simple/ |
安装pwntools库(必)
python2对于的pip或者说pip2的pwntools模块中,兼并了checksec与ROPgadget,如果安装了pip2的pwntools,0x06,0x07即可跳过。ubuntu16.04存在python3版本过低的问题,安装pip3的pwntools会存在问题,ubuntu20.04存在apt源中舍弃了python-pip的问题,需要手动安装pip2,因此这两个版本需要自己寻找解决方案,部分解决方案已经给出
pwntools是一个专为pwn开发的一个python库。让我们书写exploit变得容易特别多。
1 | pip install --upgrade pwntools |
实际上python2版本的pwntools安装完后会自带capstone,checksec,ROPgadget等工具包。检查一下checksec于ROPgadget是否可以用,可以用就可以跳过下面两步骤了。
安装checksec(必)
1 | # 直接装 |
安装ROPgadget(必)
1 | sudo apt-get install python-capstoneinstall |
安装gdb动态调试神器(必)
安装gdb
1 | sudo apt install gdb |
安装gdb拓展,常用的拓展有pwndbg,peda,gef(推荐安装pwndbg,但是在无法安装的时候可以选择peda,但内核调试似乎又是gef最好使,值得一提的是gef说还在用python2的是可怜虫,但ubuntu16.04默认的python3.5已经跑不了gef脚本了, ̄へ ̄)。
上方是三个插件的官方仓库,下面节选了pwndbg和peda安装部分命令:
- 以pwndbg为例:
上面给出了github仓库地址。从仓库中的文档中复制,pwndbg安装如下:1
2
3git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
现如今仓库里写着对ubuntu20.04与ubuntu18.04最友好
- peda安装
上面给出了github仓库地址。从仓库中的文档中复制,peda安装如下:
1 | git clone https://github.com/longld/peda.git ~/peda |
其中在做堆题时候,有一个pwnGDB拓展很好用,仓库地址,我们同样加进来。
1 | cd ~/ && git clone https://github.com/scwuaptx/Pwngdb.git |
此时我们的~/.gdbinit应该会变成下面这样,把第二行删除并保存即可(如果选择安装了peda,则不需要做任何操作)。
1 | source /home/gnol/pwndbg/gdbinit.py |
安装one_gadget(必)
这是一款检查glibc中一健getshell的gadget的小工具,用ruby的包管理器gem安装(ubuntu16源里ruby版本过低,需要自行寻找解决方案,我的解决方案是,再配置一个ubuntu18)
首先安装ruby
1 | sudo apt install ruby ruby-dev |
安装one_gadget
1 | sudo gem install one_gadget |
使用方法:
1 | one_gadget libc.so.6 |
安装seccomp-tools(必)
这是一款检查沙箱保护的小工具,同样使用ruby书写
1 | sudo gem install seccomp-tools |
使用方法:
1 | seccomp-tools dump ./a.out |
安装main_arena_offset(必)
这个是shell脚本,可以直接在GitHub下载下来。直接放在/bin/目录下就能用
1 | git clone https://github.com/bash-c/main_arena_offset.git |
使用方法与one_gadget类似。
安装ropper(选)
与ROPgadget相同,但是对于大文件的分析,ropper比ROPgadget性能要好。github仓库
1 | # 直接pip装 |
详细信息,查看源仓库readme.md。
简单的例子:
1 | # gnol @ root in ~/Desktop/buuctf [0:19:43] |
安装radare2(选)
radare2是一款开源强大的终端静态分析程序。
1 | # 安装 |
初体验时,上手比ida pro困难,但是功能强大,开源免费。
安装Ghidra(选)
是一款与ida pro相似的静态分析软件,开源免费,且跨平台。需要首先由jkd11+的java环境。
去github上下载源码,编译运行。
下载zip,解压后运行./ghidraRun。
优势是跨平台加开源,在linux下使用方便,但是使用初体验差于ida pro。
安装patchelf(必)
patchelf可以修改elf中的ld和libc路径。
1 | sudo apt install patchelf |
使用:
1 | patchelf --set-interpreter [ld.so路径] --set-rpath [libc所在目录] [elf文件] |
安装glibc-all-in-one(必)
glibc包下载工具,可以查看下载不同的libc包,配合patchelf可以切换不同的libc版本。
1 | git clone https://github.com/matrix1001/glibc-all-in-one.git |
使用方法:
1 | ./update_list #更新最新版本的glibc |
其他个人兴趣配置(与Pwn无关)
以下内容纯属作者的虚拟机喜欢装,不是必须的内容。
Tmux
- 安装
Ubuntu直接sudo apt install tmux
源码编译:GitHub仓库
- 简单配置:
安装tpm工具,tmux-plugin-manager
1 | git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm |
安装德古拉主题
安装插件使用ctrl+b+I
,滚动屏幕适用ctrl+b+[
进入copy-mode模式,我们设置copy-mode模式位vi模式,即可用vim的操作来控制我们的终端。
以下配置文件直接wget http://gnol3.top/doc/tmux.txt
即可获取
1 | # List of plugins |
解决vim-airline在tmux中实去色彩,需要在.zshrc中设置export TERM=xterm-256color
[-]小三角形符号的可能修补方案,之所以是可能,是因为我没有尝试去做修复简书Maonx所写方案
[+]似乎安装JetBrainsMono-1.0.2.zip这个字体后,小三角形符号就补全了(秃然有一天发现的)
FZF
- Using git
1 | git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf |
- 对于Debian系的apt安装,要求Debian9+,Ubuntu19.10+
1 | sudo apt install fzf |
BAT
注意一下适用版本,对于Ubuntu来说需要20.04及以上,且从apt中直接sudo apt isntall bat
下载的包命令是batcat
,如果需要用bat
作为命令需要自己手动设置一条alias
给系统添加Fira Code与JetBrians Mono字体
先下载对应字体的zip压缩包
1 | unzip xxxx.zip -d ~/.local/share/fonts |
WN
dwm
todo
i3wm
todo
后记
滚动更新,未完待续……