0%

ubuntu环境搭建

前置工作

下载 VMware:VMware 中国 - 交付面向企业的数字化基础 | CN

下载对应的 Ubuntu 镜像:Index of /ubuntu-releases/ (ustc.edu.cn)

安装 Ubuntu

选择新建虚拟机:

选择稍后安装:

在“虚拟机设置”中选择“CD/DVD”,然后指定 ISO 镜像文件的位置:

启动虚拟机开始安装

左侧滑到最下面,然后选择“中文”,接着点击“安装Ubuntu”:

接下来的操作有点“炒蛋”,由于窗口空间有限,我们要利用方向键来选择“下一步”:

耐心等待程序安装完毕:

  • 如果嫌慢可以直接 Skip

安装 VMwareTools

右键选择“重新安装”:

选择左侧的 DVD,把压缩包解压:

执行命令 sudo ./vmware-install.pl,如果遇到 [NO] 要选择 [YES]

如果无法实现[主机/虚拟机]复制粘贴,就执行如下命令来安装 open-vm-tools:

1
sudo apt-get install open-vm-tools-desktop fuse

设置共享文件夹

在“虚拟机设置”中选择“共享文件夹”

选择“总是启用”后点击添加:

选择需要主机上需要共享的文件夹

然后在 /mnt/hgfs 目录下就有我们的共享目录了,如果没有则需要多安装一些东西

1
sudo apt install open-vm-tools*

输入以下命令查看 VMware 配置是否有问题:

1
vmware-hgfsclient

如果没有则进行挂载:

1
2
sudo mkdir /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other

安装 Clash for Linux 实现科学上网

下载地址:Releases · Fndroid/clash_for_windows_pkg (github.com)

  • 下载 Clash.for.Windows-0.17.3-x64-linux.tar.gz

解压后执行 ./cfw

  • 需要购买并配置机场

设置网络代理:

为 git 配置代理:

1
2
git config --global https.proxy https://127.0.0.1:7890
git config --global http.proxy http://127.0.0.1:7890

设置开机自动启动:

1
2
sudo touch /etc/systemd/system/clash.service
sudo vi /etc/systemd/system/clash.service
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=clash daemon

[Service]
Type=simple
User=root
ExecStart=/opt/clash/clash -d /opt/clash/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target
1
2
systemctl start clash.service
systemctl enable clash.service

安装 Oh My Zsh 美化终端

安装 Zsh:

1
sudo apt install zsh
  • 将 Zsh 设置为默认 shell
1
chsh -s /bin/zsh

安装 Oh My Zsh:

1
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

安装插件:

  • zsh-autosuggestions(代码补全)
1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  • zsh-syntax-highlighting(颜色标记)
1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  • 使用 gedit ~/.zshrc 命令进行进行配置(修改 plugins
1
2
3
4
5
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)

Ubuntu 换源

1
2
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo vim /etc/apt/sources.list
  • 更换阿里源:
1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
  • 保存后更新
1
2
sudo apt-get update
sudo apt-get upgrade

安装 Python 环境

先安装通用软件依赖:

1
sudo apt install software-properties-common

然后安装 python:

1
2
3
sudo apt install python2
sudo apt install python3
sudo apt install python3-pip

由于 Ubuntu 官方源已经不支持 pip2 的安装,于是我们只能手动安装 pip2:

1
2
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py

pip 换源:

1
2
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装各种 pwn 工具

  • pwntools(核心)
1
2
python -m pip install --upgrade pwntools
python3 -m pip install --upgrade pwntools
  • patchelf(换 libc 版本)
1
2
3
4
5
6
7
git clone https://github.com/NixOS/patchelf.git
cd patchelf
./bootstrap.sh
./configure
make
make check
sudo make install
  • glibc-all-in-one(下载 libc 版本)
1
2
3
git clone https://github.com/matrix1001/glibc-all-in-one.git 
cd glibc-all-in-one/
python update_list
  • ROPgadget(找 gadget)
1
2
3
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
sudo python setup.py install
  • ropper(找 gadget)
1
sudo pip3 install ropper
  • seccomp_tools(检测沙盒)
1
2
sudo apt install gcc ruby-dev
sudo gem install seccomp-tools
  • one_gadget(找 one_gadget)
1
2
sudo apt install gcc ruby-dev
sudo gem install one_gadget

安装调试工具

  • GDB
1
sudo apt-get install gdb
  • pwngdb
1
2
git clone https://github.com/scwuaptx/Pwngdb.git 
cp ./Pwngdb/.gdbinit ~/
  • pwndbg
1
2
3
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

pwngdb+pwndbg 文件配置:

1
gedit ~/.gdbinit
1
2
3
4
5
6
7
8
9
10
11
# source ~/tools/peda/peda.py
source ~/tools/pwndbg/gdbinit.py
source ~/tools/Pwngdb/pwngdb.py
source ~/tools/Pwngdb/angelheap/gdbinit.py

define hook-run
python
import angelheap
angelheap.init_angelheap()
end
end

安装 VScode

1
2
3
4
5
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update
sudo apt upgrade
sudo apt install code

下载与更换 gcc 版本

1
2
3
4
sudo apt install g++-5
sudo apt install gcc-5
sudo apt install g++-7
sudo apt install gcc-7
1
2
3
4
5
6
7
8
9
➜  Tools ls  /usr/bin | grep g++
g++
g++-5
g++-7
g++-9
x86_64-linux-gnu-g++
x86_64-linux-gnu-g++-5
x86_64-linux-gnu-g++-7
x86_64-linux-gnu-g++-9

使用以下命令生成链接组:

1
2
3
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-9

使用如下命令更换 gcc:

1
sudo update-alternatives --config gcc

效果如下:

1
2
3
4
5
6
7
8
9
10
3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/gcc-5 50 自动模式
1 /usr/bin/gcc-5 50 手动模式
2 /usr/bin/gcc-7 50 手动模式
3 /usr/bin/gcc-9 50 手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

安装 docker

docker:

1
2
3
4
5
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
  • 检测 docker 是否运行:
1
sudo systemctl status docker
  • docker 换源:
1
2
sudo touch /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
1
2
3
4
5
6
7
8
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ghcr.io",
"https://mirror.baidubce.com"
]
}
  • 不用 sudo 来执行 docker 命令:
1
2
3
sudo usermod -aG docker ${USER}
sudo service docker restart
newgrp - docker

docker-compose:

1
2
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
1
sudo chmod +x /usr/local/bin/docker-compose

angr 环境搭建

为了不与 pwntools 库引起冲突,可以采用拉取 docker 镜像的方式进行使用:

1
docker pull angr/angr

以下脚本可以方便我们运行 docker angr:

1
2
3
4
#! /bin/zsh
pwd=`pwd`
script=$1
docker run -it -u angr --rm -v $pwd:/mnt -w /mnt angr/angr "/home/angr/.virtualenvs/angr/bin/python" "/mnt/$script" $2 $3

Kernel Pwn 环境搭建

安装 qemu:

1
2
sudo apt-get install qemu  
sudo apt-get install qemu-system-x86

安装 busybox:

1
wget http://busybox.net/downloads/busybox-1.23.2.tar.bz2
1
make menuconfig
  • 在“Build static binary”处按“Y”选中(采用静态编译,为了不添加动态链接库)
1
2
make -j8
make install
  • 编译出来的 _install 就是目标了(这里的报错可能比较多,在网上都可以找到)

编译内核:

1
2
make menuconfig 
make x86_64_defconfig
  • 使用 x86_64 默认配置
1
make bzImage -j4
  • bzImage:arch/x86/boot/bzImage
  • vmlinux:源码所在的根目录下

V8 环境搭建

安装 depot_tools 工具集:

1
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  • depot_tools 加入你的 PATH 环境变量中
1
2
3
sudo gedit /etc/profile.d/yhellow.sh
---------------------------------------
export PATH="$PATH:/home/yhellow/Tools/depot_tools"

获取 V8 源码:

1
2
3
fetch v8
cd v8
./build/install-build-deps.sh
  • 在 V8 的目录中安装依赖(时间较长)
1
2
3
gclient config https://webrtc.googlesource.com/src.git 
export DEPOT_TOOLS_UPDATE=0
gclient sync