一、配置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
毕竟下面的这个命令有点复杂,而且有可能会出错
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