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

一、配置zsh和一些pwn环境

1.获取zsh并配置zsh为shell

sh 复制代码
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都连接不上,再尝试下面的命令,否则跳到下一步

sh 复制代码
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推荐):

sh 复制代码
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

安装插件:

sh 复制代码
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:
shell 复制代码
cd ~/
git clone https://kkgithub.com/scwuaptx/Pwngdb.git 
cp ~/Pwngdb/.gdbinit ~/
(2)pwndbg
shell 复制代码
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中的版本
shell 复制代码
# 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卸载后再安装,未验证删除该部分仍可运行的可行性)

shell 复制代码
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 永久换源

sh 复制代码
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百度网盘下载

sh 复制代码
cd ~
git clone https://kkgithub.com/matrix1001/glibc-all-in-one
glibc-all-in-one

下载所需要版本的glib

sh 复制代码
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:

sh 复制代码
sudo apt install patchelf

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

sh 复制代码
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

sh 复制代码
# ~/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

本文使用的命令:

sh 复制代码
#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没有显示预期结果,需要删除源文件,重新下载该二进制文件

查看是否替换成功

sh 复制代码
ldd ./bin

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

shell 复制代码
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

sh 复制代码
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
相关推荐
中科三方1 小时前
如何通过DNS解析实现负载均衡?有哪些优势?
运维·负载均衡
安科瑞刘鸿鹏1 小时前
双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
大数据·运维·物联网·安全·能源
小呆瓜历险记1 小时前
ubuntu 22.04搭建SOC开发环境
linux·运维·ubuntu
码农101号1 小时前
Linux中shell流程控制语句
linux·运维·服务器
ajassi20001 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
聪明小萝卜1 小时前
无法与IP建立连接,未能下载VSCode服务器
运维·服务器
JuiceFS2 小时前
深度解析 JuiceFS 权限管理:Linux 多种安全机制全兼容
运维·后端
暗夜潜行2 小时前
ubuntu + nginx 1.26 + php7.4 + mysql8.0 调优
linux·运维·ubuntu
IU宝2 小时前
Linux下基础IO
linux·运维·服务器
鹅是开哥2 小时前
ZZU-ARM汇编语言实验2
linux·运维·服务器