从零开始配置linux工作环境——含oh-my-zsh、pwn环境——适用于:wsl2(ubuntu)、Ubuntu1804-2304、KALI

时间:2024-03-11 15:45:40

一、配置zsh和一些pwn环境

1.获取zsh并配置zsh为shell

sudo apt install curl zsh git
# 国内网络优先使用github镜像源安装
sh -c "$(curl -fsSL https://raw.kkgithub.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"


# 如果github连接没问题可以尝试下面的命令

# sh -c "$(curl -fsSL  https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

如果github和镜像源kkgithub都连接不上,再尝试下面的命令,否则跳到下一步

cd ~
rm .zshrc
curl -fsSL https://raw.kkgithub.com/ohmyzsh/ohmyzsh/master/tools/install.sh > install.sh
sudo chmod +x install.sh
sed -i 's/github/kkgithub/g'  install.sh
./install.sh
#解释一下上面的命令:
#sed 是用于流式文本编辑的命令工具。
#-i 选项表示直接在文件中进行替换(in-place)。
#    's/github/kkgithub/g' 是 sed 命令的替换操作部分:
#       s/ 表示替换操作的开始。
#       github 是要搜索并替换的字符串。
#        kkgithub 是替换后的字符串。
#        /g 表示全局替换,即替换所有匹配的地方,而不仅仅是第一次匹配。
#    文件名 是要进行替换操作的文件名。
# 也使用文本编辑其把sh命令中的github改为kkgithub 或者其他github镜像网站
#sudo vim  install.sh 
# 可不设置, git clone 安装oh my zsh时会有设置zsh为默认shell的选项
# chsh -s $(which zsh)

2.设置主题(agnoster)与插件:

或者简单版(非wsl的linux推荐):

cd ~
# 下面这个命令是更换zsh主题
sed -i 's/^ZSH_THEME=".*"$/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc
echo 'plugins=(
	z
	zsh-history-substring-search
	git
	docker
	zsh-autosuggestions
	zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
' | sudo tee -a ~/.zshrc

安装插件:

git clone https://gitee.com/haohaogood/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://gitee.com/haohaogood/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
git clone https://gitee.com/wangl-cc/zsh-history-substring-search.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# p10k configure 可重新配置p10k
source ~/.zshrc

3.pwngdb+pwndbg

参考博文:CSDN-_n19hT(作者)-gdb调试 | pwndbg+pwndbg联合使用

(1)pwngdb:
cd ~/
git clone https://kkgithub.com/scwuaptx/Pwngdb.git 
cp ~/Pwngdb/.gdbinit ~/
(2)pwndbg
git clone https://kkgithub.com/pwndbg/pwndbg
cd pwndbg
# 这一部需要至少3.8的pyenv
# sed -i 's/github/kkgithub/g'  setup.sh
./setup.sh
# setup如果报错,比如什么python的库安装不了,就自己改一下requriments.txt中的版本
# vim ~/.gdbinit
# 然后在~/.gdbinit文件中按照下图提示写入内容(记得不要错字和大小写)
# source ~/pwndbg/gdbinit.py
sudo rm ~/.gdbinit
touch ~/.gdbinit
echo '# source ~/peda/peda.py
source ~/pwndbg/gdbinit.py
source ~/Pwngdb/pwngdb.py
source ~/Pwngdb/angelheap/gdbinit.py

define hook-run
python
import angelheap
angelheap.init_angelheap()
end
end
' | sudo tee -a ~/.gdbinit

在这里插入图片描述

4.pwntolls (both for py2-pip2 & py3-pip3)

参考博文:CSDN-luminous_you(作者)-Pwntools安装

(1)linux pip2和pip3共存

按照上述步骤安装步骤后,kali存在py2,py3,pip3,但是没有pip2,运行下述命令即可pip2和pip3共存(以下步骤可能存在不必要的部分,如py3卸载后再安装,未验证删除该部分仍可运行的可行性)

sudo apt install python2
sudo apt install python3
# 下面这步可能会无效,是为了防止有些机器已经安装过pip3
sudo apt remove python3-pip
# 下面这个比较慢
sudo wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2 get-pip.py 
sudo apt install python3-pip
(2)pip2、pip3安装pwntools及pip2安装pwntools的错误解决方案

pip 永久换源

pip2 install --upgrade pip setuptools
pip2 install --upgrade pip setuptools
# 尝试后发现清华源比阿里源快,总觉得阿里源是没有加速作用的
sudo pip2 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
sudo python2 -m pip install --upgrade pwntools
sudo python3 -m pip install --upgrade pwntools

pip2 可能出现的报错error: invalid command ‘egg_info'
参考博文:CSDN-lf_x(作者)-pip2安装pwntools报错error: invalid command ‘egg_info‘
注意:Pwntools 维护者强烈建议在未来所有基于 Pwntools 的脚本和项目中使用 Python3。

5.glibc-all-in-one

参考博文:CSDN-云啾啾啾(作者)-安装不同glibc版本 堆实验
安装

patchelf和glibc-all-in-one百度网盘下载

cd ~
git clone https://kkgithub.com/matrix1001/glibc-all-in-one
glibc-all-in-one

下载所需要版本的glib

python3 update_list             #更新最新版本的glibc
cat list                 #查看可下载的glibc
./download 2.23-0ubuntu11.3_amd64        #glibc为你想要下载glibc的名字  #!!!!!后缀为amd64的为64位程序所用的glibc,如需调试32位程序,选择后缀为i386的libc

(输入arch命令可以看到自己本机的系统架构,x86_64和amd64是同一个东西)

patchelf

在执行下面的命令之前
先试一下这个命令是否可以下载patchelf:

sudo apt install patchelf

毕竟下面的这个命令有点复杂,而且有可能会出错

cdgit clone https://kkgithub.com/NixOS/patchelf.git
sudo apt-get install dh-autoreconf
cd patchelf
./bootstrap.sh
./configure
make
sudo make install
make check
# 不用理报错
使用patchelf为单个文件更换glib

先确定二进制文件有可执行权限
ldd查看其现有libc的名字:ldd的第二行,本处为:/home/compsys/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so,在下面会作为patchelf --replace-needed命令的第二个参数:libc_to_replace
在这里插入图片描述

在这里插入图片描述

# ~/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64在下载的glibc-all-in-one的libs目录下,是刚刚下载的glibc
#最后一个参数是要修改的可执行文件
# .......的内容是home下username,两个加起来就是 ~
# targetFile是要修改的二进制文件
patchelf --set-interpreter ~/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/ld-2.23.so ./targetFile
patchelf --replace-needed libc_neeed_to_repalce  ~/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so ./targetFile

本文使用的命令:

#patchelf --set-interpreter ~/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/ld-2.23.so ./binary_file 
#patchelf --replace-needed libc.so.6 ~/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so ./binary_file

注意,如果第一次替换错了,ldd没有显示预期结果,需要删除源文件,重新下载该二进制文件
查看是否替换成功

ldd ./bin

(ps:如果此时显示下述内容,可能是32位程序使用了64位程序所需的libc,需要重新下载更换libc)

ldd freenote_x86                                                                             
        linux-gate.so.1 (0xf7f57000)
        /home/kali/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so => not found

6.pyenv更换多个不同版本的python

pyenv更换多个不同版本的python

7.LibcSearcher

cd ~
git clone https://gitee.com/light-and-full-of-meaning/LibcSearcher.git
cd LibcSearcher
# python setup.py install
# 使用上面注释掉的python setup.py install命令,如果直接运行python exp.py会提示“No module named LibcSearcher",需要将LibcSearcher.py 复制到当前目录(exp.py目录)。
# 建议使用下面的命令
sudo python3 setup.py develop
sudo python2 setup.py develop
#以下是增加新的libc
#如果LibcSearcher报错:no matched libc,please add more libc or try others,使用下面的命令
cd ~/LibcSearcher
rm -rf libc-database
git clone https://kkgithub.com/niklasb/libc-database
cd libc-database
sudo apt-get install zstd

# ./get需要下载的内容非常多,下载再比较慢
# 执行下面的命令时如果下载到了自己所需要的版本,就可以ctrl+c了,剩下的可以以后慢慢下载
./get ubuntu

# 如果还不行的话执行下面的命令也许可以解决问题,(未验证)
# cd ..
# sudo python setup.py develop