Ubuntu22.04虚拟机环境搭建
前言
安装软件或
git
仓库到本地时,建议在路径/opt
下安装或存放,养成文件管理的习惯另外,apt 安装时建议使用新的
sudo apt install xxx
代替旧的sudo apt-get install xxx
使用 pip 安装库时,pip install xxx
和 sudo pip install xxx
安装的库路径不一样,例如:
sudo pip install xxx
安装路径:/usr/local/lib/python3.10/dist-packages/
pip install xxx
安装路径:/home/wyy/.local/lib/python3.10/site-packages/
尽量不要使用 sudo pip install
来安装 python 库
如果搭建 Ubuntu 16.04 这种旧版本的环境,请移步本站:《Ubuntu16.04虚拟机环境搭建》一文
以下所有的安装都基于 Ubuntu 22.04 和 Kali 2022.4 虚拟机进行了测试,其他版本的 Ubuntu 和 Kali 虚拟机应该也大同小异,但是版本比较旧的系统可能差异会比较大,需要自己斟酌一下
不算 tips 的小 tips:
- VM 虚拟机挂起后再保存快照可以秒存,但开机运行状态保存快照相当慢(开机运行状态保存快照中途是可以继续操作虚拟机的,不影快照的保存)
- 如果发现在虚拟机中,鼠标的额外功能键无法使用,比如:前进、后退等
在虚拟机文件夹下,有一个xxx.vmx
的文件,在虚拟机关闭的条件下,使用记事本打开,在文件的最后添加如下内容,重新开启虚拟机,即可使用鼠标的额外功能键:mouse.vusb.enable = "TRUE" mouse.vusb.useBasicMouse = "FALSE" usb.generic.allowHID = "TRUE"
- 如果遇到终端的光标消失的问题(我在分屏 GDB 调试时经常遇到其中一个终端不显示光标),使用如下命令解决:
echo -e "\033[?25h" # 显示光标 echo -e "\033[?25l" # 隐藏光标
- 如果在 VMware Workstation 中安装 Ubuntu 虚拟机时界面显示不全,无法点击确定和下一步,这是由于系统默认分辨率与电脑分辨率的差异导致的,可以在桌面空白位置按
Ctrl + Alt + T
,即可打开终端,输入:xrandr -s 1280x800
后回车即可显示全部界面
VMtools
为了避免麻烦,建议直接使用开源的
Open VM Tools
替代 VMware 官方的VMware Tools
Open VM Tools
比较新,几乎不存在冲突,且安装相当方便
像 Ubuntu16.04 这种旧版本还是建议使用 VMware 官方的 VMware Tools
安装和卸载 VMware Tools
如果你已经安装了
VMware Tools
,可以输入如下命令卸载
# 安装,将VMtools解压到一个目录下,例如主目录
cd ~/vmware-tools-distrib
sudo ./vmware-install.pl
# 卸载
sudo vmware-uninstall-tools.pl
安装 Open VM Tools
安装
VMware Tools
经常会出现兼容性不好,系统之间复制文件失灵等问题,建议安装Open VM Tools
# 更新系统软件包
sudo apt update
sudo apt upgrade
# 安装 Open VM Tools
sudo apt install open-vm-tools-desktop
# 如果要卸载 Open VM Tools,或者想换回 VMware Tools 之前需要先卸载这个
sudo apt-get autoremove open-vm-tools --purge
更换镜像源
Linux 自带的源来自国外,有时候下载速度感人,十分难受,建议换成清华镜像
其他版本可查询清华镜像源官网:
ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
kali | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
Ubuntu 22.04
注意看好版本,这是 22.04 版的 Ubuntu,其他版本在 sources.list 下加入的内容可能会不一样
cd /etc/apt # 进入 apt 目录下
sudo cp sources.list sources.list.backup # 备份
sudo vim sources.list # 编辑 sources.list 文件
# 加入下面两个----之间的内容
-----------------------------------------------------------------
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
-----------------------------------------------------------------
# 刷新三连
sudo apt update
sudo apt upgrade
sudo apt clean
中科大源:
# 加入下面两个----之间的内容
-----------------------------------------------------------------
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
-----------------------------------------------------------------
阿里源:
# 加入下面两个----之间的内容
-----------------------------------------------------------------
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-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed 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
-----------------------------------------------------------------
注意:
Ubuntu 24.04 将以前的配置文件
/etc/apt/sources.list
改成了/etc/apt/sources.list.d/ubuntu.sources
:
只需要将原来的 URL 链接改成对应的镜像源链接即可,我这里是清华源:
镜像源链接参考:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
其他可用镜像源链接参考:Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源_ubuntu24.04-CSDN博客
Kali 2022.4
注意看好版本,这是 2022.4 版的 Kali,其他版本在 sources.list 下加入的内容可能会不一样
cd /etc/apt # 进入apt目录下
sudo cp sources.list sources.list.backup # 备份
sudo vim sources.list # 编辑sources.list文件
# 加入下面两个----之间的内容
-----------------------------------------------------------------
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
-----------------------------------------------------------------
# 刷新三联
sudo apt update
sudo apt upgrade
sudo apt clean
如果出现报错:
E: 无法下载 http://mirrors.tuna.tsinghua.edu.cn/kali/dists/kali-rolling/main/Contents-amd64.gz 文件尺寸不符(45560927 != 45558390)。您使用的镜像正在同步中? [IP: 101.6.15.130 80]
Hashes of expected file:
- Filesize:45558390 [weak]
- SHA256:fd332c3ab98b5e98ac397a567a05bdd915101ce3ef1e86f05290b992301ba85a
- SHA1:7a6efb0f8eecb97ef9ef3a040ff4c200a00174e7 [weak]
- MD5Sum:8ee1329ae53741a9cf3d51ffb83c92c9 [weak]
Release file created at: Tue, 10 Oct 2023 00:06:42 +0000
E: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
这是镜像源的问题
可以将清华源换为中科大源:
# 加入下面两个----之间的内容
-----------------------------------------------------------------
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
-----------------------------------------------------------------
或者阿里源:
# 加入下面两个----之间的内容
-----------------------------------------------------------------
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
-----------------------------------------------------------------
Python 配置
安装 python
系统有自带 python,但是可以自己换成更新的版本
sudo apt install python3.10 # 以 python 3.10 为例,格式为 pythonx.x
设置默认 python 版本
终端输入 python 默认识别为 python3,两种方式选其一即可
- 通过软链接修改
# 若显示 rm: 无法删除 '/usr/bin/python': 没有那个文件或目录,则直接执行下面那一句
sudo rm /usr/bin/python
# 例如我修改为python3.10,即:/usr/bin/python -> /usr/bin/python3.10
sudo ln -s /usr/bin/python3.10 /usr/bin/python
- 通过更改
.bashrc
修改
# 例如我修改为python3.10
echo alias python=python3.10 >> ~/.bashrc
source ~/.bashrc
安装 pip
主要安装 python3 的 pip
sudo apt install python3-pip
更新 pip 版本:
pip3 install --upgrade pip
注意:
Ubuntu 24.04、Kali 2024.1 中使用 pip 安装库或者更新 pip 的时候可能会报错:
error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install.
其实这不是 bug,而是 Ubuntu 为了避免冲突而加入的
简单粗暴的方式,直接屏蔽掉即可:
sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.backup
具体报错原因和其他解决方法的详细说明请参考文章:pip(3) install,完美解决 externally-managed-environment - 耀龙笔记
设置默认 pip 版本
终端输入 pip 默认识别为 pip3
# 若显示 rm: 无法删除 '/usr/bin/pip': 没有那个文件或目录,则直接执行下面那一句
sudo rm /usr/bin/pip
# 例如我修改为pip3
sudo ln -s /usr/bin/pip3 /usr/bin/pip
更换 pip 源
更换完下载源,该更换 pip 源了,在 Windows 下用 pip 安装过 python 库的都懂,这玩意不换没法用啊
查看当前 pip 源配置:
pip config list
- 在命令行直接更改,打开终端:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
如果配置成功,每次使用 pip install xxx
时,会显示:"Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple"
,且下载速度很快
- 否则的话,说明配置未成功,尝试下面的方法手动配置:
sudo mkdir ~/.config/pip && cd ~/.config/pip # 新建 pip 文件夹,进入 pip 文件夹
sudo vim pip.conf # 新建并编辑 pip.conf
# 加入下面两个----之间的内容
-----------------------------------------------------------------
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 6000
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
disable-pip-version-check = true
-----------------------------------------------------------------
中科大:https://pypi.mirrors.ustc.edu.cn/simple
阿里:http://mirrors.aliyun.com/pypi/simple
迁移 pip 库
如果想更换 Python 版本,可以直接将以前的 pip 库迁移到新的 python 环境下
# 生成 requirements.txt 文件
pip freeze > requirements.txt
# 在新环境下,安装 requirements.txt 依赖
pip install -r requirements.txt
为防止 python 版本造成的 pip 库不兼容,使用以下脚本去掉 requirements.txt
中的版本号:
def remove_versions(input_file, output_file):
with open(input_file, 'r') as file:
lines = file.readlines()
with open(output_file, 'w') as file:
for line in lines:
# 去掉行末的换行符
line = line.strip()
# 如果存在 '==', 则使用 '==' 进行分割,否则保留原样
if '==' in line:
package_name = line.split('==')[0]
else:
package_name = line
file.write(package_name + '\n')
# 使用示例
input_file = './requirements.txt' # 输入文件名
output_file = './requirements_no_version.txt' # 输出文件名
remove_versions(input_file, output_file)
然后执行:
pip install -r requirements_no_version.txt
这样默认安装的就是支持当前 python 环境的最新版本 pip 库了
安装 Anaconda
python 项目的神器(尤其是论文实验),可以配合 Pycharm 使用,不用再为项目中千奇百怪的 python 版本而烦恼了
官网下载安装脚本即可:https://repo.anaconda.com/archive/
安装简单,参考这篇文章即可,写的很详细:如何在Linux服务器上安装Anaconda(超详细) linux安装anconda-CSDN博客
查看当前 conda 配置:
conda config --show
添加清华源,提高下载速度:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
创建新的 conda 环境:
conda create -n 环境名称 python=python版本 需要安装的python库 -y
查看已有的 conda 环境:
conda env list
激活 conda 环境:
conda activate 环境名称
删除 conda 环境:
conda remove --name 环境名称 --all
注意:
如果设置过默认 python 版本,例如:
sudo ln -s /usr/bin/python3.10 /usr/bin/python
,有可能在 conda 环境中 python 指向的是默认版本,而不是 conda 环境设置的版本可以使用如下命令取消设置的默认 python 版本:
sudo unlink /usr/bin/python
,但是更推荐下面的方法也可以临时设置环境变量:
export PATH=~/anaconda3/envs/环境名称/bin:$PATH
(具体请根据自己实际的环境路径来设置,可以通过conda env list
来查看)
Java 配置
open-jdk
和oracle-jdk
选其一即可,oracle-jdk
相对来说更稳定一点
安装 open-jdk
查找 open-jdk 版本:
sudo apt search openjdk
以安装 open-jdk 11 为例:
# 安装 java11
# 若要安装 java8:sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
# 验证
java -version
查看已安装的 open-jdk 版本:
apt list --installed | grep openjdk
# 显示:
# openjdk-11-jdk-headless/jammy-updates,jammy-security,now 11.0.20.1+1-0ubuntu1~22.04 amd64 [已安装,自动]
# openjdk-11-jdk/jammy-updates,jammy-security,now 11.0.20.1+1-0ubuntu1~22.04 amd64 [已安装]
# openjdk-11-jre-headless/jammy-updates,jammy-security,now 11.0.20.1+1-0ubuntu1~22.04 amd64 [已安装,自动]
# openjdk-11-jre/jammy-updates,jammy-security,now 11.0.20.1+1-0ubuntu1~22.04 amd64 [已安装,自动]
卸载 open-jdk,以 open-jdk 11 为例:
sudo apt --purge remove openjdk-11-jdk
sudo apt --purge remove openjdk-11-jdk-headless
sudo apt --purge remove openjdk-11-jre
sudo apt --purge remove openjdk-11-jre-headless
可以同时使用 apt 安装多个版本的 open-jdk,然后使用如下命令切换 jdk 版本:
# 如果我们只用 apt 安装过一个版本的 java,会显示无需配置
sudo update-alternatives --config java
安装 oracle-jdk
官网下载 jdk 压缩包:Java Downloads | Oracle
以 oracle-jdk 8 为例,下载 jdk-8u381-linux-x64.tar.gz
解压并移动到 /usr/bin
目录下:
tar vxf jdk-8u381-linux-x64.tar.gz
sudo mv jdk1.8.0_381 /usr/bin/
配置环境变量:
export JAVA_HOME=/usr/bin/jdk1.8.0_381
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 验证
java -version
卸载只需删除 /usr/bin/java
目录即可
CTF 配置
回归正题,可以开始安装 CTF 所需要的环境了
安装 git
迟早要用到的
sudo apt install git
- 如果发现有时候网不行,github 项目 git 不下来或者 wget 不下来,无法连接,尝试 cdn 加速:
git config --global url."https://ghproxy.com/https://github.com".insteadOf "https://github.com"
如果不想使用了,通过:
git config --global --edit
删除掉对应的配置即可
注意:官方是没有提供 cdn 的,因此上面的 cdn 链接都是用爱发电,可能某天就无法使用了
- 查看当前 git 代理设置:
git config -l
- 也可以对 github.com 添加代理:
git config --global http.https://github.com.proxy http://192.168.148.1:7890
如果不想使用了,通过:
git config --global --unset http.https://github.com.proxy
取消代理即可
安装 32 位库
运行 32 位的 ELF 可执行文件时需要
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libncurses5-dev lib32z1
sudo apt install libc6:i386 libstdc++6:i386
安装 Capstone
一个轻量级的多平台架构支持的反汇编架构
sudo git clone https://github.com/aquynh/capstone /opt/capstone
cd /opt/capstone
sudo make
sudo make install
安装 pwntools
通过 pip 安装或通过 git 安装,两种方法都可以,选其一即可
- 通过 python 的 pip 安装
sudo apt install python3-pip
pip3 install --upgrade pip
sudo python3 -m pip install pwntools
# 或者直接安装pwn库,自带pwntools
sudo python3 -m pip install pwn
- 通过 git 安装
sudo git clone https://github.com/Gallopsled/pwntools /opt/pwntools
cd /opt/pwntools
sudo python setup.py install
- 验证安装
python # 打开python
# 输入下面的代码,Ⅰ或Ⅱ选其一即可
-------------------------------------------
# Ⅰ
import pwn
pwn.asm("xor eax,eax")
-------------------------------------------
# Ⅱ
from pwn import *
asm("xor eax,eax")
-------------------------------------------
# 如果输出的是这个,那就是安装成功了
输出:'1\xc0'
-------------------------------------------
安装 LibcSearcher
在做栈溢出相关的题时,经常会遇到构造 ROP 链的情况。若我们在 IDA 反编译之后没有看到 system 函数,栈题大概率需要泄漏 libc 库中的函数。此时,LibcSearcher 就是最好的选择,可以用它找到偏移地址
pip3 install LibcSearcher -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:
网上有很多通过 git 来安装的LibcSearcher
在使用的时候会出现 “libcsearcher No matched libc, please add more libc or try others
“ 的报错,通过 git 安装的那个版本可能不支持 python3,或者不是云端查找我自己当初就是通过 git 安装,然后踩坑了,网上一大堆说删了
Libcdatabase
重新下载、通过./get
更新的方法,但都行不通。。。
安装 checksec
checksec 可用于识别二进制文件的安全属性,只是一个 sh 脚本,安装 pwntools 时自带,如果没有或者出现问题的话可以再手动安装
sudo git clone https://github.com/slimm609/checksec.sh.git /opt/checksec.sh
cd /opt/checksec.sh
# 直接创建软链接即可使用,
sudo ln -s /opt/checksec.sh/checksec /usr/local/bin/checksec
注意:创建软连接的指令中,两个路径都必须使用绝对路径,否则会报如下错误:
符号连接的层数过多: checksec
如果使用 checksec 过程中出现如下报错:
command not found: checksec
可尝试使用上述方法通过 git 仓库创建软链接进行修复
当然还可以直接重装 pwntools,因为 checksec 一般是安装 pwntools 自带的,报错大概率与 pwntools 有关:
pip uninstall pwntools
pip install pwntools
安装 ROPgadget
用来找 gadget 的,安装 pwntools 时自带,如果没有或者出现问题的话可以再手动安装
sudo git clone https://github.com/JonathanSalwan/ROPgadget.git /opt/ROPgadget
cd /opt/ROPgadget
sudo python setup.py install
如果使用 ROPgadget 过程中出现如下报错:
Traceback (most recent call last):
File "/usr/local/bin/ROPgadget", line 4, in <module>
__import__('pkg_resources').run_script('ROPGadget==7.3', 'ROPgadget')
File "/home/wyy/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 720, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/home/wyy/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1546, in run_script
raise ResolutionError(
pkg_resources.ResolutionError: Script 'scripts/ROPgadget' not found in metadata at '/home/wyy/.local/lib/python3.10/site-packages/ROPGadget-7.3.dist-info'
无论是 pwntools 自带的 ROPgadget 还是自己手动 git 安装的 ROPgadget,都将 ROPgadget 的 git 仓库下的 scripts
目录移动到报错的路径下即可
# 如果是 pwntools 自带的 ROPgadget, 首先需要将 ROPgadget 仓库 git 到本地
# sudo git clone https://github.com/JonathanSalwan/ROPgadget.git /opt/ROPgadget
sudo cp -r /opt/ROPgadget/scripts /home/wyy/.local/lib/python3.10/site-packages/ROPGadget-7.3.dist-info
也可以尝试查看 ROPgadget 的版本,并卸载重装:
pip list | grep ROPgadget
pip uninstall ROPgadget
pip install ROPgadget==版本号
重装 ROPgadget 后若因为旧版本而导致 pip 产生警告:
WARNING: Skipping /usr/local/lib/python3.11/dist-packages/ROPGadget-7.2.dist-info due to invalid metadata entry 'name'
删除该文件即可:
sudo rm -rf /usr/local/lib/python3.11/dist-packages/ROPGadget-7.2.dist-info
安装 one_gadget
one_gadget 可以用来动态查找执行 libc 动态库中的 system 执行函数,可以一步到位
在做相关堆题时尤为有效,用来寻找 libc 库中的execve('/bin/sh', NULL, NULL)
,一个 gadget 就可以 getshell,但需要注意 one_gadget 相关限制条件
sudo apt install ruby
sudo gem install one_gadget
注意:one_gadget 需要安装 ruby (ruby < 2.4 会导致 one_gadget 无法安装,最好是通过添加仓库的方式安装)
如果上述安装出现问题,可以通过添加仓库安装 ruby:
# 删除旧版本 ruby
sudo apt purge --auto-remove ruby
# 添加仓库
sudo add-apt-repository ppa:brightbox/ruby-ng
sudo apt update
# 指定 ruby 2.6 版本
sudo apt install ruby2.6 ruby2.6-dev
安装 glibc-all-in-one
在做堆题时,经常遇到不同版本的 libc,这时 glibc-all-in-one 可以很好的派上用场,动态更改 elf 文件 libc 版本
sudo git clone https://github.com/matrix1001/glibc-all-in-one.git /opt/glibc-all-in-one
cd /opt/glibc-all-in-one
sudo ./update_list # 获取可以更新的 glibc 的版本
cat list # 查看可下载的 glibc
sudo ./download 需要的libc版本 # 例如:2.31-0ubuntu9_amd64
默认下载到 glibc-all-in-one 的 /libs
目录下
安装 patchelf
与 glibc-all-in-one 配合使用,可以用于更改 elf 文件 libc 版本
- 通过 apt 安装
sudo apt install patchelf
- 源码编译安装
sudo git clone https://github.com/NixOS/patchelf.git /opt/patchelf
cd /opt/patchelf
sudo ./bootstrap.sh
sudo ./configure
sudo make
sudo make check
sudo make install
# 验证安装:
patchelf --version
执行 sudo ./bootstrap.sh
可能会报错:
./bootstrap.sh: 2: ./bootstrap.sh: autoreconf: not found
安装所需的包:
sudo apt install autoconf automake libtool
安装 main_arena_offset
获取给定 libc 的 main_arena 偏移量
作者 zarkivy 将其集成到了 pymao 库中:GitHub - zarkivy/py_main_arena_offset: Get main_arena offset of a given libc with python (依赖于 objdump,请确保你的 Linux 中已安装 binutils 包)
- 原版
sudo git clone https://github.com/bash-c/main_arena_offset /opt/main_arena_offset
使用方法:
cd /opt/main_arena_offset
./main_arena libc文件名
- pymao 集成版
sudo git clone https://github.com/IZAY01/py_main_arena_offset /opt/py_main_arena_offset
cd /opt/py_main_arena_offset
sudo python3 setup.py develop
使用示例:
from pymao import *
libc = "./libc-2.27.so"
main_arena_offset = gmao(libc)
# or main_arena_offset = get_main_arena_offset(libc)
安装 QEMU
这是 arm 的 pwn 环境,QEMU 可以用来模拟各种架构的固件的运行,前期可以不安装,但是终究是逃不过的,建议一步到位
VMware 和 Virtualbox 之类通常只能在 x86 计算机上虚拟出一个 x86 虚拟机,而 QEMU 支持在 x86 上虚拟出一个 ARM 虚拟机
QEMU 源码下载地址:Index of / qemu
虚拟机磁盘镜像下载地址:Index of /~aurel32/qemu
sudo apt install qemu qemu-kvm virt-manager bridge-utils binfmt-support
sudo apt install qemu-system qemu-user-static # 安装系统态、用户态
# 安装依赖库
sudo apt install -y gcc-arm-linux-gnueabi
sudo apt install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gdb-arm-none-eabi synaptic gcc-aarch64-linux-gnu eclipse-cdt git
通过 apt 方式安装的 QEMU 卸载:
# 删除包和相关依赖
sudo apt-get remove --auto-remove qemu*
# 删除配置文件和相关的数据文件
sudo apt-get purge --auto-remove qemu*
注意:Ubuntu 24.04 中貌似去除了
sudo apt install qemu
,但仍可以通过sudo apt install qemu-system qemu-user-static
安装,只是版本是qemu-8.2.2
QEMU 有 user mode 和 system mode 两种配置方式
其中 QEMU 在 system mode 配置下模拟出整个计算机,可以在 QEMU 之上运行一个操作系统;而 user mode 仅可用来运行对应架构的二进制文件,例如:交叉编译
采用源码编译安装 qemu-9.0.0
:
wget https://download.qemu.org/qemu-9.0.0.tar.xz
tar xvJf qemu-9.0.0.tar.xz
cd qemu-9.0.0
安装依赖:
sudo apt install ninja-build zlib1g zlib1g-dev libglib2.0-dev libpixman-1-dev libfdt-dev python3-venv libgtk-3-dev build-essential pkg-config binutils-dev
sudo apt install flex bison
编译安装:
sudo mkdir build && cd build
# 以编译 x86_64 架构的 QEMU 为例,-softmmu 表示 system mode
sudo ../configure --enable-kvm --target-list=x86_64-softmmu --enable-debug
# 启动多核心编译加快速度
sudo make -j$(nproc)
# 将其安装到 /bin 目录下,即可通过终端启动
sudo make install
编译命令中一些参数的说明:
参数 | 含义 |
---|---|
--enable-kvm | 表示开启 kvm 支持 |
--target-list | 指定要编译的 CPU 架构(如果不指定,就是全部架构都编译),其中 -softmmu 表示 system mode,-linux-user 表示 user mode |
--enable-debug | 能够对 QEMU 进行调试 |
目前在 Ubuntu 24.04 中编译 AARCH64 架构的时候会报错
[2181/9361] Compiling C object libqemu-aarch64-linux-user.fa.p/target_arm_helper.c.o ninja: build stopped: subcommand failed. make: *** [Makefile:167:run-ninja] 错误 1
将报错文件
../target/arm/cpu.c
的第 1020 行的CS_ARCH_ARM64
改为CS_ARCH_ARM
,重新编译即可
编译完成后,会在 build
目录下生成 x86_64
架构下的 QEMU 本体:qemu-system_x86-64
在终端验证安装:
qemu-system_x86-64 --version
查看 QEMU 安装路径:
which qemu-system-x86_64
另外,QEMU 默认没有网络脚本文件,需要自己进行创建
在 /usr/local/etc
目录下(也有可能是 /etc
目录下,可以到时候根据报错路径来确定),新建 qemu-ifup
文件:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
ip tuntap add $1 mode tap user `whoami`
ip link set $1 up
sleep 0.5s
ip link set $1 master $switch
exit 0
else
echo "Error: no interface specified"
exit 1
fi
增加权限:
sudo chmod 755 /usr/local/etc/qemu-ifup
安装 Zsteg
做 MISC 需要,图像隐写神器
sudo gem install zsteg
安装 Basecrack
做 REVERSE、MISC 需要,Base 系列编码分析工具
sudo git clone https://github.com/mufeedvh/basecrack.git /opt/basecrack
cd /opt/basecrack
pip install -r requirements.txt
python basecrack.py
GDB 配置
见 《GDB的基础和使用》一文,有非常详细的介绍
配置 ZSH 终端
对比 Ubuntu 和 Kali 之后,觉得 Kali 的终端历史命令自动补全的功能真的是太好用了,还有命令输入正确和错误的高亮提示,简直不要太好用,原因就在于 Kali 2020 之后的版本默认终端为 zsh
Ubuntu 也可以安装 zsh 作为终端哦,不用再羡慕隔壁 Kali 啦,接下来用 zsh 打造一个究极好用的全新 Ubuntu 终端吧
参考文章:
- Ubuntu版本安装zsh、配置ohmyzsh及插件、主题更换_ubuntu ohmyzsh-CSDN博客
- 解决oh-my-zsh plugin ‘zsh-autosuggestions’ not found 与 plugin ‘zsh-syntax-highlighting’ not found问题 | BaKanTu union us (bktus.com)
注意:安装
zsh
后,以后所有要写入~/.bashrc
的配置全都只需要写入~/.zshrc
即可
安装 zsh
:
sudo apt update && sudo apt upgrade
sudo apt install zsh
为了配置 zsh
,还必须安装 zsh
的配置工具 oh my zsh
,安装:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
输入 y
将默认 shell 更改为 zsh
:
Looking for an existing zsh config...
Found /root/.zshrc. Backing up to /root/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to /root/.zshrc.
Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n]
验证安装:
zsh --version
# zsh 5.8.1 (x86_64-ubuntu-linux-gnu)
添加原来 bash 的环境变量,将 ~/.zshrc
的第二行取消注释:
使配置生效:
source ~/.zshrc
一些可能的问题:
- 如果使用
zsh
过程中历史记录出现问题,报错如下:
zsh: corrupt history file /home/wyy/.zsh_history
删除原历史记录并重建:
mv ~/.zsh_history ~/.zsh_history_bad
strings -eS ~/.zsh_history_bad > ~/.zsh_history && fc -R ~/.zsh_history
sudo rm -rf ~/.zsh_history_bad
重启终端即可解决
- 如果出现以下报错:
zsh: no matches found: xxx
编辑 ~/.zshrc
文件:
sudo gedit ~/.zshrc
在文件最后加上一句:setopt no_nomatch
使配置生效:
source ~/.zshrc
配置 zsh-autosuggestions
这是一个历史命令智能提示插件,能帮助我们快速执行历史命令,实现终端历史命令自动补全
安装:
sudo apt install zsh-autosuggestions
打开 zsh
配置文件:
sudo gedit ~/.zshrc
搜索 plugins
,在 plugins 后面添加插件 zsh-autosuggestions
(注意与原有的 git 空格隔开)
并加入插件 zsh-autosuggestions
的默认保存地址:
plugins=(git zsh-autosuggestions)
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
保存退出后,更新 ~/.zshrc
使配置生效:
source ~/.zshrc
如果报错:
➜ ~ source ~/.zshrc
[oh-my-zsh] plugin 'zsh-autosuggestions' not found
这是因为前面并没有把插件的代码仓库克隆到本地位置上,所以插件其实并没有被安装
将插件克隆到本地:
sudo git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
更新 ~/.zshrc
使配置生效:
source ~/.zshrc
问题即可解决
安装 zsh-autosuggestions
前:
安装 zsh-autosuggestions
后:
灰色部分就是终端历史命令自动补全,与 Kali 终端一样
配置 zsh-syntax-highlighting
语法高亮插件,当在终端输入命令时,这个插件可以帮助纠错,命令为红色代表错误,绿色代表正确
方法和配置 zsh-autosuggestions
一样
安装:
sudo apt install zsh-syntax-highlighting
打开 zsh
配置文件:
sudo gedit ~/.zshrc
搜索 plugins
,在 plugins 后面添加插件 zsh-syntax-highlighting
(空格隔开)
并加入插件 zsh-syntax-highlighting
的默认保存地址:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
将插件克隆到本地:
sudo git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
更新 ~/.zshrc
使配置生效:
source ~/.zshrc
安装 zsh-syntax-highlighting
后:
命令为绿色代表正确,红色代表输入错误
更换 ZSH 终端主题
zsh 终端自带很多不同风格的主题,可以根据自己的喜好更换
查看 zsh
自带的主题:
cd ~/.oh-my-zsh/themes && ls
打开 zsh
配置文件:
sudo gedit ~/.zshrc
搜索 ZSH_THEME
:
默认主题是 robbyrussell
,可以根据个人喜好自行修改
如果设置为:ZSH_THEME="random"
,则每次打开终端时,主题都是随机的
如果不知道选哪个主题好,也可以先将主题设置为随机,然后每次打开 zsh
后都会显示:[oh-my-zsh] Random theme 'xxx' loaded
其中 xxx
就是该主题的名字,遇到喜欢的,就将其加到 ZSH_THEME
中
修改好后,更新 ~/.zshrc
使配置生效:
source ~/.zshrc
以下主题样式可供参考:
af-magic
bira
fox
xiong-chiamiov
gianu
切换 shell 终端
查看系统已安装的 shell:
cat /etc/shells
查看当前使用的 shell:
echo $SHELL
- 临时切换 shell:
直接输入 shell 的名称即可,切换 zsh 就终端输入 zsh,切换 bash 就终端输入 bash
- 永久切换 shell:
# 将终端永久切换为 zsh
sudo chsh -s /bin/zsh
编辑器和 IDE
安装 Pycharm/CLion
如果不想用了,可以参照官方卸载方法:卸载 PyCharm | PyCharm 文档 (jetbrains.com)
如果想安装专业版,参考文章:
仅供学习交流,请支持正版
打开 Pycharm 后,如果界面显示异常,比如各种按键的方框显示不全:
一般虚拟机中的各种显示问题 bug,都和 VM 的 3D 图形加速有关,关掉即可正常显示:
Ubuntu 22.04
这里通过命令行安装,也可以直接在应用商店里面安装
以 Pycharm 为例:
sudo snap install pycharm-professional/pycharm-community(选其一) --classic
注意:CLion 只有专业版,没有免费的社区版
当然也可以参照下面 Kali 的方法自己通过安装包安装 (好处是可以自己指定版本)
Kali 2022.4
官网下载 Linux 版:Download PyCharm: Python IDE for Professional Developers by JetBrains
以 pycharm-community-2022.1.1.tar.gz 为例(专业版同理)
解压并移动到 /opt
下:
sudo tar -zxvf pycharm-community-2022.1.1.tar.gz
sudo mv pycharm-community-2022.1.1 /opt/
解压后进入 Pycharm 的 bin 目录,运行 Pycharm:
cd /opt/pycharm-community-2022.1.1/bin
sudo ./pycharm.sh
运行软件后:工具栏 –> Tools –> Create Desktop Entery
可以创建桌面快捷方式,并将图标加入开始菜单
安装 VScode
感觉不是很好用,作为编辑器还是不错的,用来写代码不错,但是使用 VScode 运行代码可能会有各种小问题需要解决
比如:文件相对路径问题(已解决)、gdb.attach 附加调试的终端问题(未解决)等等
Ubuntu 22.04
Ubuntu 可以直接在应用商店里安装,软件名为:code
Kali 2022.4
安装软件包:
sudo apt update
sudo apt install curl gpg software-properties-common apt-transport-https
导入 Microsoft GPG 密钥:
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
添加 VS Code APT 存储库:
echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
安装 Visual Studio Code:
sudo apt update
sudo apt install code
当然也可以自己手动下载 VScode 的 deb 文件安装,详见本站《Ubuntu16.04虚拟机环境搭建》一文的《安装 VScode》一节
配置 C/C++
首先要安装好
gcc
、g++
、gdb
环境
安装 C/C++
和 Code Runner
插件
使用 VScode 调试:
新建 .vscode
文件夹,在 .vscode
文件夹下新建两个文件:launch.json
和 tasks.json
以后在其他的文件夹中要调试都要重建 .vscode
子文件夹并配置
launch.json
内容:
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
内容:
{
"version": "2.0.0",
"tasks": [{
"label": "compile",
"command": "g++", // c 文件为 gcc, cpp 文件为 g++
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
配置 Python
首先要安装好
python
环境
安装插件 Code Runner
即可,其他插件:Pylance
、Python
Code Runner
插件的代码运行指令可在 扩展 -> Code Runner -> 扩展设置 -> Code-runner: Executor Map -> 在 settings.json 中编辑
进行自定义
使用和一些问题
如果是从 snap 商店安装的 VScode 可以直接使用,如果是自己通过 .deb 包安装,可能需要将 code 添加到环境变量
从终端打开 VScode:
code
使用 VScode 创建文件并编辑: (类似于 VIM)
code 文件名
注意:
在 VScode 中使用绝对路径一般没问题,但是使用相对路径./
可能会出问题
这并不是路径错了,而是 VScode 默认的相对路径是针对.vscode
文件夹所在的目录,而不是当前编辑的文件所在目录.vscode
文件夹默认放置在用户家目录下:~/
解决办法:
- 打开 VScode 设置,在
Code Runner
插件中搜索:File Directory As Cwd
,将下面的选项打上勾,重新打开编辑的文件,即可正常
- 如果不使用
Code Runner
,而是直接使用Python
插件,则在Python
插件中搜索:Execute ln File Dir
,将下面的选项打上勾,重新打开编辑的文件,即可正常
其他
安装 Chrome 浏览器
众所周知,“Chrome 是世界上最好的浏览器” (手动狗头)
Ubuntu 22.04
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
Kali 2022.4
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
安装过程中会报错,显示缺少 libu2f-udev
直接 apt 安装 (如果还缺其他的,同理安装即可):
sudo apt install libu2f-udev
然后在主菜单中搜索 Chrome,单击即可正常打开 Chrome 浏览器
但是这时如果 Kali 2022.4 没有配置全局代理 (终端的代理不算),会发现 Chrome 无法走代理,也就无法使用 Google 的服务了
这时候只需打开主菜单,搜索 Chrome,右键 --> 编辑应用程序
然后在“命令”一栏的最后,加上参数:-proxy-server="xxx"
(记得与前面的参数之间加上一个空格隔开),其中 xxx 就是你的代理服务器地址
然后重新打开 Chrome,就可以连接上代理啦
安装搜狗输入法
Ubuntu 22.04
下载 Linux 版搜狗输入法:搜狗输入法linux-首页 (sogou.com)
2023 年底,我发现我 Ubuntu 22.04 虚拟机上的搜狗输入法突然无法正常使用,无论如何都无法切换出中文输入,之前一切正常,不知道是否是系统更新或是其他未知 bug 的缘故,问题版本为 V4.2.1
猜测是 fcitx 出现问题,如果你遇到和我一样的问题,可以按照下述操作来解决,但如果使用 fcitx4 后搜狗输入法仍然无法正常使用(我就是),那可能只能暂时使用 fcitx5 了
目前在 2024 年 4 月找到了一种解决上述问题的方法:
在
/etc/environment
文件中添加如下内容GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
重启后即可切换出中文输入法,搜狗输入法也可以正常使用了
无法切换出中文输入的具体原因还是未知,网上一堆方法也都没有作用,但终于是折腾好了
删除所有输入框架:
sudo apt purge fcitx* ibus*
重新安装 fcitx4:
sudo apt-get install fcitx
# 如果出现报错:sudo apt install -f
或者安装 fcitx5(与 fcitx4 选其一即可):
sudo apt install fcitx5 fcitx5-*
注意:fcitx5 和搜狗输入法是不能共存的,因此只需要选择 fcitx4 + 搜狗输入法 或者 fcitx5 的组合之一就行
fcitx5 自带的输入法如下:
安装 gnome-tweaks
来设置 fcitx5 开机自启动:
sudo apt install gnome-tweaks
gnome-tweaks
或者也可以直接使用 ibus(与 fcitx4、fcitx5 不共存,选其一):
sudo apt install ibus
sudo im-config -s ibus
sudo apt install ibus-gtk ibus-gtk3
sudo apt install ibus-pinyin
将中文输入法添加到输入源选项中,即可使用
Kali 2022.4
下载 Linux 版搜狗输入法:搜狗输入法linux-首页 (sogou.com)
安装 Typora
仅供学习交流,请支持正版
查看电脑架构:
uname -m
下载对应的 Typora 安装包:
# x86(amd64)
wget https://download2.typoraio.cn/linux/typora_1.6.6_amd64.deb --output-document typora.deb
# ARM
wget https://download2.typoraio.cn/linux/typora_1.6.6_arm64.deb --output-document typora.deb
安装 Typora:
sudo dpkg -i typora.deb
新建 md 文本文件:
typora md文件名
在终端通过 typora 来打开 md 文件:
# 一般情况下,typora 为默认的 md 文本编辑器,直接使用这条命令即可
open md文件名
# -----------------------------------------
# 如果 typora 不是默认的 md 文本编辑器
open -a typora md文件名
# 也可以直接将 open -a typora 取一个别名,比如:typora,避免繁琐的输入
# 如果使用了 zsh 终端则打开 ~/.zshrc,如果使用默认终端则打开 ~/.bashrc
sudo vim ~/.zshrc
# 将以下两虚线之间的命令写入 zshrc 文件的末尾:
# ----------------------------------------
alias typora="open -a typora"
# ----------------------------------------
# 使配置生效:
source ~/.zshrc
# 然后就可以通过以下命令使用 typora 打开 md 文件:
typora md文件名
虚拟机代理
虚拟机走物理机代理(推荐)
将虚拟机网络模式设置为 NAT 或桥接模式 (两种方式下对应的物理机 IP 地址不一样,虚拟机在 NAT 模式下走物理机的 VMnet8 虚拟网卡,桥接模式下走物理机的 VMnet0 虚拟网卡)
这里以 NAT 模式为例,假设物理机 IP 为 192.168.148.1
通过 clash 走代理
物理机在 clash 主界面中打开“局域网代理”(Allow LAN),并查看代理端口,以 7890 为例
在虚拟机中按参数手动设置代理即可:
通过 v2rayN 走代理
物理机在 v2rayN 中打开:设置 -> 参数设置 -> 允许来自局域网的连接
在 v2rayN 主界面中,查看局域网的 socks5 和 http 端口号:
在虚拟机中按参数手动设置代理即可:
虚拟机自身安装 clash
在 Ubuntu 或者 Kali Linux 虚拟机中安装 clash 有两种方法:
第一种是直接下载
clash-linux-amd64
的二进制文件,没有图形化界面第二种是使用
clash for windows
的 Linux 版,这种方式运行的 clash 可以使用图形化界面声明:以下仅供学习安装使用,不可用于其他用途,除学习安装以外其他的一切问题与本站无关
- 下载官网的 Linux 版
clash-linux-amd64
二进制文件(现在官网貌似 g 了,自己想办法,本站不提供任何下载)
下载:GitHub - Dreamacro/clash: A rule-based tunnel in Go.
以 clash-linux-amd64-v1.6.5.gz 为例
右键解压并重命名:
mv clash-linux-amd64 clash
为方便在任何位置启动 clash,将其移动到 /usr/bin
目录下,并启动 clash 进行初始化:
chmod +x clash
sudo mv clash /usr/bin/
clash
初始化执行 clash 会默认在 ~/.config/clash/
目录下生成配置文件和全球 IP 地址库:config.yaml
和 Country.mmdb
直接将你的 yaml 配置文件替换 ~/.config/clash/
目录下的 config.yaml
即可
开启 clash 后,浏览器输入:
http://clash.razord.top/#/proxies
进入 clash 的控制台 (浏览器的设置中,代理选项可能需要设置为使用系统代理)
- 下载
clash for windows
的 Linux 版(本站不提供任何下载)
以 Clash.for.Windows-0.20.39-Opt.1-linux-x64.tar.gz
为例
解压后直接运行 cfw
二进制文件即可
由于有图形化界面,这里不再赘述
Ubuntu 22.04 配置
每次使用 clash 前,在设置中将代理设为手动,参数如下: (最底下那个可以不用管)
Kali 2022.4 配置
进入 /etc/profile.d
目录,新建文件 proxy.sh
cd /etc/profile.d
sudo vim proxy.sh
# 加入下面两个----之间的内容
-----------------------------------------------------------------
export proxy="http://127.0.0.1:7890"
export http_proxy=$proxy
export https_proxy=$proxy
export HTTP_PROXY=$proxy
export HTTPS_PROXY=$proxy
-----------------------------------------------------------------
执行脚本文件:
source proxy.sh
开启 clash,检查网络代理服务器是否配置成功:
clash
# 另开一个终端
curl google.com
# 如果配置失败:
# curl: (7) Failed to connect to 127.0.0.1 port 7890 after 0 ms: Couldn't connect to server
# 如果配置成功:
# <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
# <TITLE>301 Moved</TITLE></HEAD><BODY>
# <H1>301 Moved</H1>
# The document has moved
# <A HREF="http://www.google.com/">here</A>.
# </BODY></HTML>
以上配置的是终端的代理,浏览器的代理需要在浏览器中单独设置
在火狐浏览器中,搜索代理,将参数设置为:
配置终端代理
如果有时候发现浏览器等软件是走的代理,但是终端貌似没有走代理,可以在终端配置文件中单独设置一次
可以通过终端的环境变量来实现,打开终端的配置文件:
sudo gedit ~/.zshrc
# 如果没有安装 zsh 终端,使用的是默认终端,则打开:~/.bashrc
# sudo gedit ~/.bashrc
添加以下内容:
export http_proxy=http://proxyAddress:port
export https_proxy=http://proxyAddress:port
使配置生效:
source ~/.zshrc
# 如果没有安装 zsh 终端,使用的是默认终端,则打开:~/.bashrc
# source ~/.bashrc
创建桌面快捷方式并添加到开始菜单
以 IDA 为例,在桌面打开终端
新建一个 IDA-Freeware-8.2.desktop 文件:
cd ~/桌面
sudo vim IDA-Freeware-8.2.desktop
并写入以下内容: (注意按照自己实际情况修改路径)
[Desktop Entry]
Version=0.9.4
Type=Application
Name=IDA Freeware 8.2
Comment=Interactive Disassembler Freeware 8.2
Icon=/opt/idafree-8.2/appico64.png
Exec=/opt/idafree-8.2/ida64
Terminal=false
MimeType=application/octet-stream;application/mac-binary;application/macbinary;application/octet-stream;application/x-binary;application/x-macbinary
StartupNotify=true
参数 | 含义 | 必要性 |
---|---|---|
[Desktop Entry] | 文件头,每个 Desktop 文件都以这个标签开始 | 必选 |
Version | 标明 Desktop Entry 的版本 | 可选 |
Type | Desktop 的类型, 常见值有 Application 和 Link | 必选 |
Name | 程序名称,可自定义 | 必选 |
Comment | 程序描述,可自定义 | 可选 |
Icon | 设置快捷方式的图标,支持 png 和 svg | 可选 |
Exec | 程序的启动命令, 可以带参数运行, 当 Type 为 Application 时有效 | 必选 |
Terminal | 是否在终端中运行, 当 Type 为 Application 时有效 (对于没有图形界面的程序很有用) | 可选 |
MimeType | 设置该程序可以打开的文件类型 | 可选 |
StartupNotify | 程序启动通知 | 可选 |
其他 MimeType
可打开的文件类型:完整的 mime type 列表-CSDN博客
增加执行权限:
sudo chmod +x IDA-Freeware-8.2.desktop
最后将 .desktop 文件存放到 /usr/share/applications/
目录下
程序就会现在开始菜单中,同时也可以在 右键 -> 使用其他应用程序打开
中找到,然后也可以自己将应用固定到任务栏,方便打开
cd ~/桌面
sudo mv IDA-Freeware-8.2.desktop /usr/share/applications/
jetbrains 全家桶等等创建桌面快捷方式就简单了,运行软件后:工具栏 –> Tools –> Create Desktop Entery
以 Pycharm 自动创建的图标为例:
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm Professional Edition
Icon=/opt/pycharm-2022.3/bin/pycharm.svg
Exec="/opt/pycharm-2022.3/bin/pycharm.sh" %f
Comment=Python IDE for Professional Developers
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm
StartupNotify=true
创建软连接将应用添加到终端启动
以 IDA 为例:
sudo ln -s "/opt/idafree-8.2/ida64" /usr/bin/ida
# 即:建软连接 /usr/bin/ida -> /opt/idafree-8.2/ida64
这样在终端输入 ida
即可打开 IDA
/usr/bin/ida
中的 ida 名字可以自定义这样只是在
/usr/bin/
下创建了一个软链接,指向/opt/idafree-8.2/ida64
若想删除软链接:sudo unlink /usr/bin/ida # 例如使用 sudo ln -s "/opt/idafree-8.2/ida64" /usr/bin/ida 后 # 会创建软连接 /usr/bin/ida -> /opt/idafree-8.2/ida64 # 使用 sudo unlink /usr/bin/ida 后会将 /usr/bin/ida 删除,但不会删除 /opt/idafree-8.2/ida64
尽量不要用
rm -rf
删除软链接,如果不小心加上'/'
就会删除源文件,例如:rm -rf filename/
终端将 cd 命令与 ls 命令连用
其实就是将
cd xxx
命令变为cd xxx && ls
,好处也显而易见:可以少敲一条命令,方便~但是 Ubuntu 不支持
chdir
,所以不能直接用alias
实现目录内容的显示
注:以下操作对 Kali Linux 同样适用
如果你的 Ubuntu 配置了 zsh 终端,编辑 ~/zshrc
配置文件(Kali Linux 自带 zsh 终端):
sudo gedit ~/.zshrc
# 如果没有配置 zsh 终端,则打开 ~/.bashrc
sudo gedit ~/.bashrc
在文件最后加入以下内容,保存退出:
alias cd=cdls;
function cdls()
{
builtin cd "$1" && ls
}
然后使配置生效:
source ~/.zshrc
# 如果没有配置 zsh 终端,则使用如下命令
source ~/.bashrc
然后就可以看到效果了:
如果想顺便显示当前所在路径,只需将前面的内容改为:
alias cd=cdls;
function cdls()
{
builtin cd "$1" && pwd && ls
}
然后就可以看到效果了:
配置 SSH 服务端
Linux 默认只安装了 SSH 客户端,有时候在执行
ssh
或者scp
命令时会出现:ssh: connect to host port 22: Connection refused
拒绝连接客户端和服务端的关系:
如果 A 机器想被 B 机器远程控制,那么 A 机器需要安装 SSH 服务端,B 机器需要安装 SSH 客户端
例如:B 机器通过 ssh 连接 A 机器,或者 B 机器通过 scp 上传文件到 A 机器
查看 ssh
服务:
dpkg -l | grep ssh
如果只显示有 openssh-client
没有 openssh-server
,说明未安装 SSH 服务端
安装:
sudo apt install openssh-server
确认 ssh-server
是否启动:
ps -e | grep ssh
如果看到 sshd
就说明 ssh-server
已经启动
如果出现其他问题的话,查看 SSH 服务端状态:
service ssh status
重启 SSH 服务端:
sudo service ssh restart
相关命令:
- 连接服务端机器,假设 IP 为 192.168.1.1,用户名为 user (Windows、Linux 通用)
ssh user@192.168.1.1
- 从客户端机器上传当前目录下的 test 文件到服务端机器的
~/
或E:\
目录下,假设 IP 为 192.168.1.1,用户名为 user
# 服务端为 Linux
sudo scp -r test user@192.168.1.1:~/
# 服务端为 Windows
sudo scp -r test user@192.168.1.1:E:\
其实只传文件的话,不需要 -r
参数,但是传文件夹需要,索性直接加上 -r
更方便
如果使用 ssh
连接出现如下报错:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
......
Host key verification failed.
lost connection
此报错是由于远程的主机的公钥发生了变化导致的
解决办法:清除 ssh
所连接的 IP
sudo ssh-keygen -R 出问题的IP地址
然后再使用 ssh
重新连接即可
安装 wine 最新版
使用 wine 可以在 Linux 下运行 Windows 程序
感觉有些软件还是不太稳定,可以体验一下,但是不用太过依赖,看个人习惯吧
查看是否安装 32 位架构:
dpkg --print-foreign-architectures
若输出 i386
则跳过下面一步,否则安装 32 位架构:
sudo dpkg --add-architecture i386
下载并添加 WineHQ 存储库密钥:
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
添加官方 Wine 存储库(针对 Ubuntu 22.04 LTS "Jammy Jellyfish"
或基于它的 Linux 发行版,如 Linux Mint 21.x
):
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
编辑 /etc/apt/sources.list.d/winehq-jammy.sources
文件,修改为国内源:
sudo vim /etc/apt/sources.list.d/winehq-jammy.sources
# 将整个文件内容替换为下面两个----之间的内容
-----------------------------------------------------------------
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu
Suites: jammy
Components: main
Architectures: amd64 i386
Signed-By: /etc/apt/keyrings/winehq-archive.key
-----------------------------------------------------------------
更新数据库并安装 wine:
sudo apt update
sudo apt install winehq-stable
安装好后默认在 /opt/wine-stable
文件夹下
验证安装:
使用方法:
wine exe程序
以 wine 启动 Windows 下的 x64dbg 为例:
关于 wine 的其他配置也可以参考这篇文章,写的挺详细的:在ubuntu22.04中安装及使用wine_ubuntu wine-CSDN博客
更新 snap 商店
如果有小伙伴喜欢在 snap 商店中安装软件,就会发现当在 snap 商店中更新软件的时候,更新到 Snap Store 时总是会报错,提示无法更新(其实原因很简单,只是单纯因为 snap 商店无法自己更新自己。。。)
更新 snap 商店需要在终端进行:
sudo snap refresh snap-store
如果报错:
错误:cannot refresh "snap-store": snap "snap-store" has running apps
(ubuntu-software), pids: 2150
说明 snap 商店正在运行,pid 为 2150,需要先关闭 snap 商店再进行更新:
sudo kill 2150 # 注意改为自己的 snap 商店 pid
sudo snap refresh snap-store