从零开始配置linux工作环境——含oh-my-zsh、pwn环境——适用于:wsl2(ubuntu)、Ubuntu1804-2304、KALI
一、配置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 的脚本和项目中使用 Python
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
毕竟下面的这个命令有点复杂,而且有可能会出错
cd ~ git 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