Ubuntu16.04安装部署pwn调试环境

Ubuntu16.04安装部署pwn调试环境

问题困境:
部分题目需要使用Ubuntu16.04的环境,实际上是需要libc2.23的环境,Ubuntu16.04默认只能安装python3.5,python3.5不支持f字符串方法(导致部分安装错误,并且不能更新pip,安装pwndbg的时候会更新pip,但是pip更新之后无法运行,因为基础python是3.5版本,遇到f字符串报错,LibcSearcher也无法安装,也有f字符串)
单独编译安装其他高版本的python是可以解决部分问题,但是在安装pwndbg的时候,还是会安装python3.5,很多东西需要依赖于系统的python,自己安装的python版本不能支撑起他的一些依赖,导致两个版本的冲突,一会儿在高版本装一会儿在低版本装,gdb运行调用的又是python3.5版本的基础engine,然后装完pwndbg之后pip又不能运行了,反正就是一团乱麻几个问题兜兜转转还是那个f字符串不支持的问题
更新系统的源,安装一些其他的python版本,网上找到的办法添加的ppa里面倒是能安装python高版本,但是安装pwndbg的时候又是基于python3.5,然后又绕了一圈回到之前的问题

解决方法

正常部署自己的容器,利用conda实现python的版本控制,管你系统基础环境啥python,直接每次进系统的时候进入我的虚拟环境,在高版本的python环境下,使用我的调试工具,同时使用基础的libc环境(Ubuntu16.04的libc2.23版本)

安装 Miniconda3-latest-Linux-x86_64.sh

wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

嫌他下载慢了,把上面的链接搞到下载器里面下载下来,再导入到容器里面也行

配置权限

chmod 777 Miniconda3-latest-Linux-x86_64.sh

安装Miniconda

sh Miniconda3-latest-Linux-x86_64.sh

一路默认即可

检查conda环境

conda

一般老说安装过程中初始化之后在当前用户的 .bashrc 文件里面已经添加了conda的环境,要是上面的命令运行为识别的命令的话,检查一下环境变量,检查一下.bashrc文件看有没有下面这段

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/root/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/root/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/root/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/root/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

上面这段就是初始化之后添加的,其实可以看出来环境变量已经添加了,可能刚刚安装完的这的命令行会话还没有生效这部分内容,可以重启一下容器,或者使用下面的命令更新一下配置文件

source ~/.bashrc

完成这些之后,能在命令行开头看到base就说明conda已经起来了,如下所示

(base) root@u1604:/#

配置conda的更新源,提升下载速度

(base) root@u1604:/# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
(base) root@u1604:/# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
(base) root@u1604:/# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
(base) root@u1604:/# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
(base) root@u1604:/# conda config --set show_channel_urls yes 
(base) root@u1604:/# conda config --get channels
--add channels 'defaults'   # lowest priority
--add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'
--add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/'
--add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/'
--add channels 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/'   # highest priority

更新conda环境

(base) root@u1604:/# conda update conda

查看已有环境

conda env list

创建Python3.9虚拟环境

(base) root@u1604:/# conda create -n ctf_pwn python=3.9

过程中的提示允许即可

激活虚拟环境

conda activate ctf_pwn

上面的命令可以临时激活虚拟环境,但是每次进来都要搞一下激活,有点麻烦,反正这个容器我只用来搞ctf调试只需要使用这一个环境,直接给他搞个默认启动虚拟环境
还是依靠 .bashrc 文件,在最后把上面的命令加上,这样没吃会话起来的时候就把环境激活了,如下所示

vim ~/.bashrc

………
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/root/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/root/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/root/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/root/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
conda activate ctf_pwn         # 这里是激活虚拟环境的命令

收官

往后每次进来的时候都是在虚拟环境下的状态,可以直接开始干活

(ctf_pwn) root@u1604:~# 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值