WSL环境配置(一) Ubuntu -22.04.6 LTS 更新包、安装Vim 1 2 3 4 udo apt update && sudo apt upgrade -y sudo apt install vim
安装PWN必要环境 写入脚本文件sh
中,给权限777 chmod 777 xx.sh
,运行后途中一直yes,按Y
回车即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #!/bin/bash cd ~sudo apt install tzdatasudo apt install vimsudo apt install libxml2-devsudo apt install libxslt-devsudo apt install libmysqlclient-devsudo apt install libsqlite3-devsudo apt install zlib1g-devsudo apt install python2-devsudo apt install python3-pipsudo apt install libffi-devsudo apt install libssl-devsudo apt install wgetsudo apt install curlsudo apt install gccsudo apt install clangsudo apt install makesudo apt install zipsudo apt install build-essentialsudo apt install libncursesw5-dev libgdbm-dev libc6-devsudo apt install tk-devsudo apt install opensslsudo apt install virtualenvsudo apt install gitsudo apt install proxychains4sudo apt install ruby-devwget https://mirrors.aliyun.com/pypi/packages/56/a0/4dfcc515b1b993286a64b9ab62562f09e6ed2d09288909aee1efdb9dde16/setuptools-36.6.1.zip unzip setuptools-36.6.1.zip cd setuptools-36.6.1sudo python2 setup.py installcd ../sudo rm -rf setuptools-36.6.1 setuptools-36.6.1.zipwget https://mirrors.aliyun.com/pypi/packages/03/c9/7b050ea4cc4144d0328f15e0b43c839e759c6c639370a3b932ecf4c6358f/setuptools-65.4.1.tar.gz tar -zxvf setuptools-65.4.1.tar.gz cd setuptools-65.4.1sudo python3 setup.py installcd ../sudo rm -rf setuptools-65.4.1 setuptools-65.4.1.tar.gzwget https://mirrors.aliyun.com/pypi/packages/53/7f/55721ad0501a9076dbc354cc8c63ffc2d6f1ef360f49ad0fbcce19d68538/pip-20.3.4.tar.gz tar -zxvf pip-20.3.4.tar.gz cd pip-20.3.4sudo python2 setup.py installsudo python3 setup.py installcd ../sudo rm -rf pip-20.3.4 pip-20.3.4.tar.gzsudo pip2 config set global.index-url https://mirrors.aliyun.com/pypi/simplesudo pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simplesudo python2 -m pip install --upgrade pipsudo python3 -m pip install --upgrade pippip3 install --upgrade pip sudo pip2 install pathlib2
配置Pwn环境 1 2 sudo python2 -m pip install --upgrade pwntools sudo python3 -m pip install --upgrade pwntools
pwndbg+Pwngdb 这里我直接去github
下载运行setup.sh
会报错要求升级python3
,所以直接把原来虚拟机里的打包复制过来了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 wget https://starrysky1004.github.io/pwnenv.zip unzip pwnenv.zip rm pwnenv.zipcd pwndbg./setup.sh cd ~/cp ~/Pwngdb/.gdbinit ~/vim ~/.gdbinit source ~/pwndbg/gdbinit.py
patchelf 1 sudo apt install patchelf
glibc-all-in-one 1 2 3 4 5 6 git clone https://github.com/matrix1001/glibc-all-in-one.git cd glibc-all-in-onepython3 update_list cat list./download xxxxx
ropper 1 sudo pip3 install capstone filebytes unicorn keystone-engine ropper
qemu-system 1 sudo apt-get install qemu-system
Ropgadget 1 sudo -H python3 -m pip install ROPgadget
1 2 sudo gem install one_gadgetsudo gem install seccomp-tools
配置Docker环境 使用 APT 安装 由于 apt
源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
1 2 3 4 5 6 7 8 $ sudo apt update $ sudo apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
为了确认所下载软件包的合法性,需要添加软件源的 GPG
密钥。
1 2 3 4 5 $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
然后,我们需要向 sources.list
中添加 Docker 软件源
1 2 3 4 5 6 7 8 9 $ echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker 更新 apt 软件包缓存,并安装 docker-ce
:
1 2 $ sudo apt update $ sudo apt install docker-ce docker-ce-cli containerd.io
启动 Docker 1 2 $ sudo systemctl enable docker $ sudo systemctl start docker
建立 docker 用户组 默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。
建立 docker
组:
将当前用户加入 docker
组:
1 $ sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。
测试 Docker 是否安装正确 1 2 3 4 $ docker run --rm hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/" : net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help' .
在进行到这一步测试的时候始终显示连接超时,可是我的WSL
的网络模式是镜像Mirror
的,我在宿主机上开启了代理,镜像网络也自动代理了,当我curl www.google.com
都是可以成功的,这里显然不是代理的问题了,我尝试在etc/docker/daemon.json
使用 Registry Mirrors
配置镜像仓库,结果也是超时
经过网上查询我又尝试了官方文档上的守护进程代理配置
为docker
服务创建一个 systemd 放置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
1 2 3 4 5 6 7 8 3. 创建一个名为 `/etc/systemd/system/docker.service.d/http-proxy.conf` 添加`HTTP_PROXY`环境变量: 4. ```bash [Service] Environment="HTTP_PROXY=socks5://127.0.0.1:7890" ##这里使用127.0.0.1是因为我WSL设置Mirror网络 Environment="HTTPS_Proxy=socks5://127.0.0.1:7890" Environment="NO_PROXY=localhost,127.0.0.1"
刷新更改并重新启动 Docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
1 2 3 4 5 6 7. 验证配置是否已加载并与您所做的更改相匹配 8. ```bash $ sudo systemctl show --property=Environment docker Environment=HTTP_PROXY=socks5://127.0.0.1:7890 HTTPS_PROXY=socks5://127.0.0.1:7890 NO_PROXY=localhost,127.0.0.1
> [守护进程代理配置 | Docker 文档 --- Daemon proxy configuration | Docker Docs](https://docs.docker.com/engine/daemon/proxy/)
尝试无果,我在搜寻WSL
下的Docker
的坑后找到了,一篇文章
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 无法在 Windows 使用 localhost 本地回环地址 127.0.0.1 访问运行在容器内的服务 1) 针对使用 Docker Desktop for Windows 用户(使用以下三种解决方法其一): ① 配置 ignoredPorts 端口(不推荐,这方法太 ugly 了) ② 请使用 Docker v27.3.0+ or latter 的版本(推荐) 2) 针对在 WSL2 内 Linux 发行版直接运行 Docker-CE Daemon 服务的用户(根据情况不同,使用以下两种解决方法其一): ① 针对使用 Systemd 的用户,可以使用此仓库提供的服务管理脚本 https://gist.github.com/shigenobuokamoto/b565d468541fc8be7d7d76a0434496a0 ② 针对 OpenRC 用户(或不喜欢引入第三方资源的),暂时通过关闭 Docker 的 iptables 模块支持 { "iptables" : false } 3) 自适应法:在宿主 Windows 访问 WSL 内 Docker 容器化服务时,使用 LAN IP 而不使用 localhost
我在使用第二个方案就可以成功Pull
仓库上的镜像了,方法如下
创建一个名为 /etc/systemd/system/network-mirrored.service
的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [Unit] Wants=network-pre.target Before=network-pre.target shutdown.target [Service] User=root ExecStart=/bin/sh -ec '\ [ -x /usr/bin/wslinfo ] && [ "$(/usr/bin/wslinfo --networking-mode)" = "mirrored" ] || exit 0;\ echo "\ add chain ip nat WSLPREROUTING { type nat hook prerouting priority dstnat - 1; policy accept; };\ insert rule ip nat WSLPREROUTING iif loopback0 ip daddr 127.0.0.1 counter dnat to 127.0.0.1 comment mirrored;\ "|nft -f -\ ' ExecStop=/bin/sh -ec '\ [ -x /usr/bin/wslinfo ] && [ "$(/usr/bin/wslinfo --networking-mode)" = "mirrored" ] || exit 0;\ for chain in "ip nat WSLPREROUTING";\ do\ handle=$(nft -a list chain $chain | sed -En "s/^.*comment \\"mirrored\\" # handle ([0-9]+)$/\\1/p");\ for n in $handle; do echo "delete rule $chain handle $n"; done;\ done|nft -f -\ ' RemainAfterExit=yes [Install] WantedBy=multi-user.target
执行以下命令
1 2 pwn@primary:~$ sudo systemctl --now enable network-mirrored Created symlink /etc/systemd/system/multi-user.target.wants/network-mirrored.service → /etc/systemd/system/network-mirrored.service.
尝试Pull
一下Nginx
1 2 pwn@primary:~$ docker run -d -it -p 80:80 nginx 4a63ed4f75437b3603cb8099b02907beaa956ce45a3a948798e0de6a89782354
访问127.0.0.1
即可
Zsh 安装与配置 安装Oh-My-Zsh 美化终端 安装基本配置 1 2 3 4 sudo apt update && sudo apt upgrade -ysudo apt install zsh git curl -y
设置默认终端Shell
为ZSH
安装oh-my-zsh 官网:http://ohmyz.sh/。 安装方式任选一个即可。
curl
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
wget
sh -c "$(wget -O- https://install.ohmyz.sh/)"
fetch
sh -c "$(fetch -o - https://install.ohmyz.sh/)"
国内curl镜像
sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"
国内wget镜像
sh -c "$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"
配置主题 这里我使用powerlevel10k
,自定义程度比较高,美化也比较好看
1 2 3 4 git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME /.oh-my-zsh/custom} /themes/powerlevel10k git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME /.oh-my-zsh/custom} /themes/powerlevel10k
在 ~/.zshrc
设置 ZSH_THEME="powerlevel10k/powerlevel10k"
。执行source .zshrc
,接下来,终端会自动引导你配置 powerlevel10k
。
安装插件 oh-my-zsh
已经内置了 git
插件,内置插件可以在 ~/.oh-my-zsh/plugins
中查看,更多插件可以在 awesome-zsh-plugins 里查看。
zsh -autosuggestions zsh-autosuggestions 是一个命令提示插件,当你输入命令时,会自动推测你可能需要输入的命令,按下右键可以快速采用建议。
安装方式:把插件下载到本地的 ~/.oh-my-zsh/custom/plugins
目录。
1 2 3 4 5 6 7 8 9 git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-autosuggestions git clone https://github.moeyy.xyz/https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-autosuggestions git clone https://gh.xmly.dev/https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-autosuggestions git clone https://gh.api.99988866.xyz/https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-autosuggestions
zsh-syntax-highlighting zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。高亮显示
1 2 3 4 5 6 7 8 9 git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-syntax-highlighting git clone https://github.moeyy.xyz/https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-syntax-highlighting git clone https://gh.xmly.dev/https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-syntax-highlighting git clone https://gh.api.99988866.xyz/https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom} /plugins/zsh-syntax-highlighting
z oh-my-zsh
内置了 z
插件。z
是一个文件夹快捷跳转插件,对于曾经跳转过的目录,只需要输入最终目标文件夹名称,就可以快速跳转,避免再输入长串路径,提高切换文件夹的效率。
oh-my-zsh
内置了 extract
插件。extract
用于解压任何压缩文件,不必根据压缩文件的后缀名来记忆压缩软件。使用 x
命令即可解压文件
sudo oh-my-zsh
内置了sudo
插件。假设你输入了一个很长的命令并且忘记在前面添加sudo
,通过按 esc 键两次,您将获得带有sudo
前缀的相同命令,而无需键入
启用插件 将上面安装的插件在zsh
中生效
修改~/.zshrc
文件中的plugins
1 plugins=(git zsh-autosuggestions zsh-syntax-highlighting z extract sudo )
注意插件直接以空格为分隔,不要用逗号
开启新的 Shell 或执行 source ~/.zshrc
,就可以开始体验插件。
Root用户 当你配置好登陆用户的 zsh 后,如果使用sudo su
命令进入root
用户的终端,发现还是默认的bash
。建议在root
用户的终端下,也安装on my zsh
,设置与普通用户不同的主题以便区分,插件可以使用一样的。
引用:Ubuntu | Docker — 从入门到实践
WSLg/WSL2 网络配置,终极解决方案 - 镜像网络 - STARGAZER
pwn环境配置 | StarrySky
Zsh 安装与配置,使用 Oh-My-Zsh 美化终端 | Leehow的小站