[TOC]

kali安装PWN环境

安装pwntools

1
2
3

pwntools是一个python的库,方便解pwn题的时候编写漏洞利用的exp,在python2和python3中都支持,我们这里就安装在python3中就可以了,命令如下:
python3 -m pip install --upgrade pwntools
1
2
3
安装好之后,输入python,进入python3环境,试一试这个库能不能用,输入如下代码:
from pwn import *
asm("xor eax, eax")

image-20241201232728512

1
如上图,成功输出对应的bytes流,说明pwntools安装成功。

安装gdb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
命令如下,一共六条命令,按顺序执行即可,首先下载gdb压缩包,本文安装的是12.1版本:
wget http://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.gz
然后解压:
tar -zxvf gdb-15.1.tar.gz
解压后进入gdb-12.1目录下:

cd gdb-15.1
添加python配置,需要根据python的具体版本进行修改,我的是python3.10,不知道自己python版本的直接命令行输入python,进入解释器的时候会提示。

./configure --with-python='/usr/bin/python3.10'
最后运行如下两条命令,make的时间可能比较长,耐心等待一会。

make
sudo make install
安装完成后,输入gdb,如果能进入到gdb的命令行界面,就说明成功了

image-20241201233004457

添加插件peda(py3需要用更低的gdb版本)

1
2
3
4
peda可以在调试程序的时候清除的看到寄存器、代码段、栈区的存储内存情况,是一个很方便的gdb插件工具。运行如下两行命令使用git获取peda,并添加到gdb环境,这样在下次在启动gdb的时候就自动进入gdb-peda模式:
git clone https://github.com/longld/peda.git /usr/bin/peda
echo "source /usr/bin/peda/peda.py" >> ~/.gdbinit
安装完成之后,输入gdb,看看是否自动进入gdb-peda模式,如果是下图的状态,就成功了:

安装 zsh

1
2
3
4
5
6
7
8
9
10
## zsh 介绍

zsh 是一个兼容 bash 的 shell,相较 bash 具有以下优点:

- Tab 补全功能强大。命令、命令参数、文件路径均可以补全。
- 插件丰富。快速输入以前使用过的命令、快速跳转文件夹、显示系统负载这些都可以通过插件实现。
- 主题丰富。
- 可定制性高。

关于 zsh 的更多的信息,可以访问 [zsh.org](https://www.zsh.org/)查看。
1
2
3
macOS: brew install zsh
ubuntu: sudo apt-get install zsh
ArchLinux/Manjaro sudo pacman -S zsh
1
cat /etc/shells

image-20241202100513924

1
2
3
使用 chsh -s /bin/zsh 命令将 zsh 设置为系统默认 shell。新开一个 Shell Session,就可以开始使用 zsh 了。
输入 q 会直接退出配置引导,下一次运行 zsh 时会再次进入配置引导。
输入 0,也会退出配置引导,但是会在当前用户目录生成一个空白的文件 .zshrc,下一次运行时就不会再进入配置引导。下一次运行时是否再进入配置引导,取决于用户目录下是否存在.zshrc 文件。

image-20241202100831328

1
由于 zsh 配置较为复杂,推荐大家使用配置管理工具来配置 zsh,花很少时间就可以得到一个称手的 zsh。下面介绍如何使用 oh-my-zsh 来修改 zsh 的主题和安装常用的插件。
1
2
3
4
5
6
7
8
9
10
安装 oh-my-zsh
安装 oh-my-zsh 之前,需要确保本地已经安装了 git。

使用 curl 下载脚本并安装:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
或者使用 wget 下载脚本并安装:

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
在配置过程中,脚本会提示将 zsh 设为默认的 shell:

image-20241202101342307

1
2
3
4
这样就安装好 oh-my-zsh 了,下面我们开始通过 oh-my-zsh 来配置 zsh 。
配置 zsh
修改主题
在 https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 中查看内置的主题样式和对应的主题名。这些内置主题已经放在 ~/.oh-my-zsh/themes 目录下,不需要再下载。

oh-my-zsh 内置主题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
除了内置主题外,还可以选择其他开源的主题,强烈推荐尝试一下 powerlevel10k 主题,一个顶十个,项目地址为:https://github.com/romkatv/powerlevel10k

oh-my-zsh 安装这个款主题的方法:使用 git 将文件 clone 只指定文件夹 ~/.oh-my-zsh/custom/themes/powerlevel10k ,命令如下:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
使用 vim 编辑 .zshrc,键入以下内容并保存:

ZSH_THEME="powerlevel10k/powerlevel10k"
最后,执行 source ~/.zshrc 配置生效,这时会提示对主题进行配置,按照提示进行即可。

安装插件
oh-my-zsh 已经内置了 git 插件,内置插件可以在 ~/.oh-my-zsh/plugins 中查看 ,下面介绍一下我常用的三个插件,更多插件可以在 awesome-zsh-plugins 里查看。

zsh-autosuggestions
zsh-autosuggestions 是一个命令提示插件,,当你输入命令时,会自动推测你可能需要输入的命令,按下右键可以快速采用建议。效果如下:

zsh-autosuggestions 插件效果

1
2
3
4
5
6
7
8
9
10
11
12
安装步骤:

把插件下载到本地的 ~/.oh-my-zsh/custom/plugins 目录:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
在 .zshrc 中,把 zsh-autosuggestions 加入插件列表:
plugins=(
# other plugins...
zsh-autosuggestions # 插件之间使用空格隔开
)
开启新的 Shell 或执行 source ~/.zshrc,就可以开始体验插件。
zsh-syntax-highlighting
zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。效果如下:

zsh-syntax-highlighting 插件效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
安装步骤:

把插件下载到本地的 ~/.oh-my-zsh/custom/plugins 目录:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
在 .zshrc 中,把 zsh-syntax-highlighting 加入插件列表:
plugins=(
# other plugins...
zsh-autosuggestions
zsh-syntax-highlighting
)
开启新的 Shell 或执行 source ~/.zshrc,就可以开始体验插件了。
z
z 是一个文件夹快捷跳转插件,对于曾经跳转过的目录,只需要输入最终目标文件夹名称,就可以快速跳转,避免再输入长串路径,提高切换文件夹的效率。效果如下:

安装步骤:

由于 oh-my-zsh 内置了 z 插件,所以只需要在 .zshrc 中,把 z 加入插件列表:
plugins=(
# other plugins...
zsh-autosuggestions
zsh-syntax-highlighting
z
)
开启新的 Shell 或执行 source ~/.zshrc,就可以开始体验插件了。
设置 alias
zsh 支持为较长命令设置一个别名,这样在使用时可以快捷输入。

这里以 cd ~/projects/hackerneo/blog 这个命令来举例:

在 .zshrc 中键入:
alias cdblog="cd ~/projects/hackerneo/blog"
开启新的 Shell 或 source ~/.zshrc,以使配置生效。生效后就可以使用 cdblog 进行跳转了。
除了自己设置 alias 之外,一些插件也内置内很多 alias。最常用的是 git 插件内置的 alias。例如,ga 就代表 git add,更多 git 插件内置 alias 可以在 git plugin alias 中查看。

其他
遇事不决,多敲 Tab。
1
2
3
4
5
6
7
8
9
10
11
12
13
ohmyzsh主题保存路径:~/.oh-my-zsh/themes

下载一个推荐的主题:git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
使用 vim 编辑 .zshrc,vi ~/.zshrc键入以下内容并保存:
ZSH_THEME="powerlevel10k/powerlevel10k"
最后,执行 source ~/.zshrc 配置生效,这时会提示对主题进行配置,按照提示进行即可。

配置出错就重启zsh:exec zsh
其次有一个问题是重启zsh后无法执行ping和ifconfig。下载一下网络配件:

sudo apt install net-tools
然后自己再改改配色啥的。
我比较喜欢朴素一点的,还有就是xiong-chiamiov主题也不错。

img

我的主题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
配置zsh主题 powerlevel9k (推荐)
安装
$ git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
编辑 ~/.zshrc来启用主题,在其中将ZSH_THEME 改为

ZSH_THEME="powerlevel9k/powerlevel9k"

如果你还没有安装字体,那么可以使用下面的命令来安装所需字体。

安装 powerline字体
# 下载
git clone https://github.com/powerline/fonts.git ~/.oh-my-zsh/custom/themes/powerlevel9k/fonts

# 进入文件夹并安装
cd ~/.oh-my-zsh/custom/themes/powerlevel9k/fonts
./install.sh

安装 Awesome-Terminal Fonts字体
git clone https://github.com/gabrielelana/awesome-terminal-fonts.git ~/.oh-my-zsh/custom/themes/powerlevel9k/fonts
cd awesome-terminal-fonts
./install.sh

安装nerd-fonts
#下载
cd ~/.oh-my-zsh/custom/themes/powerlevel9k/fonts
git clone https://github.com/ryanoasis/nerd-fonts.git或者git clone https://gitee.com/keyboardkiller/nerd-fonts.git
#安装同上
cd nerd-fonts
./install.sh

修改配置文件.zshrc

#Path to your oh-my-zsh installation.
export TERM="xterm-256color"
export ZSH="/root/.oh-my-zsh"

#default
#ZSH_THEME="robbyrussell"
#ZSH_THEME="ys"
ZSH_THEME="powerlevel9k/powerlevel9k"

plugins=(git zsh-autosuggestions)
#plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

source $ZSH/oh-my-zsh.sh

安装工具

1
gcc  apt install gcc
1
pip3  apt install python3-pip
1
qemu apt-get install qemu-user qemu-system 
1
gdb-multiarch  apt-get install gdb-multiarch
1
2
3
4
5
6
7
8
pwn  先给pwn创建一个文件夹。然后再创建一个tools文件夹
cd /home/kali/Desktop/
mkdir PWN
cd PWN
mkdir tools
cd tools
ls
┌──(root㉿penetration)-[/home/kali/Desktop/PWN]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pwntools
第一行,git报错就执行下面指令取消系统代理:

git config --global --unset http.proxy
git config --global --unset https.proxy
第三行指令,pip安装会有环境依赖相关的警告。这里把警告给删了:
sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk
这里的x我们换成12,需要和本机python环境匹配。

防止python依赖冲突混乱,当然也可以装venv,参考:https://www.yaolong.net/article/pip-externally-managed-environment/

git clone https://github.com/Gallopsled/pwntools.git
sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
#python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools

验证pwntools:

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pwngdb、peda、gef
cd PWN/tools
#git clone https://github.com/longld/peda.git
#git clone https://github.com/hugsy/gef.git
git clone https://github.com/pwndbg/pwndbg.git

pwndbg安装:

cd pwndbg
./setup.sh
插件依赖安装

sudo pip install keystone-engine ropper keystone-engine
gdb挂在插件:

sudo vi /usr/share/doc/texlive-doc/pdftex/tests/14-pdfadjustinterwordglue-segfault/.gdbinit
gdbinit内容:

source /home/kali/Desktop/PWN/tools/pwndbg/gdbinit.py

之后执行gdb查看挂载是否成功(需要进入zsh):

img

1
备忘录:从这里开始是在py3.12.7虚拟环境里安装的
1
2
3
4
5
6
ROPgadget
sudo pip3 install capstone
cd PWN/tools
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
sudo python3 setup.py install
1
2
3
seccomp-tools
sudo apt install gcc ruby-dev
sudo gem install seccomp-tools
1
2
patchelf
sudo apt install patchelf
1
2
3
4
5
ARM软件包
具备ARM交叉编译gcc与ARM程序动态链接库

sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install gcc-aarch64-linux-gnu
1
2
3
4
5
6
MIPS软件包
sudo apt-get install gcc-mips-linux-gnu
sudo apt-get install gcc-mipsel-linux-gnu
sudo apt-get install gcc-mips64-linux-gnuabi64
sudo apt-get install gcc-mips64el-linux-gnuabi64

打开pwn环境:

1
2
3
4
5
6
7
把bash下安装的软件包迁移到 Zsh 下:
~/.bashrc 的路径复制到 Zsh 的配置文件 ~/.zshrc 中
比如conda export PATH="$HOME/miniconda3/bin:$PATH" 这个路径复制到~/.zshrc
修改完 ~/.zshrc 后,需要重新加载 Zsh 配置文件,才能使更改生效:source ~/.zshrc
python环境默认都有
source activate py3.12.7进入虚拟py3.12.7环境然后换成zsh,输入zsh即可

image-20241202105145191

1
2
3
https://www.cnblogs.com/qsons/p/17718510.html
https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh
https://www.cnblogs.com/seyedog/p/18432103