基于Ubuntu搭建Pwn调试环境
<h1 id="pwn环境配置">Pwn环境配置</h1><p>本文演示使用干净的Vmware下安装的的 Ubuntu 18.04 LTS镜像 配置以下Pwn环境:</p>
<ul>
<li>OS(系统)配置
<ul>
<li>VMware Tools</li>
<li>net-tools</li>
<li>open-vm-tools</li>
<li>更换软件源</li>
<li>vim</li>
<li>开启root账户权限</li>
</ul>
</li>
<li>其它环境配置
<ul>
<li>git</li>
<li>gcc</li>
<li>python3-pip</li>
<li>python3</li>
<li>qemu</li>
<li>gdb-multiarch</li>
</ul>
</li>
<li>Pwn工具
<ul>
<li>pwn-tools</li>
<li>pwndbg、peda、gef</li>
<li>ROPgadget</li>
<li>seccomp-tools</li>
<li>LibcSearcher</li>
<li>patchelf</li>
<li>ropper</li>
<li>one_gadget</li>
<li>ARM PWN
<ul>
<li>gcc-arm-linux-gnueabi</li>
<li>gcc-aarch64-linux-gnu</li>
</ul>
</li>
<li>MIPS PWN
<ul>
<li>gcc-mips-linux-gnu</li>
<li>gcc-mipsel-linux-gnu</li>
<li>gcc-mips64-linux-gnuabi64</li>
<li>gcc-mips64el-linux-gnuabi64</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>为了一些命令可以让大家通用,所以都会加上sudo等权限语句,这样即便你不使用root账户或挑选任何一个小节直接观看和执行命令都是没有问题的</p>
<p>Ubuntu 18.04是一个常用的版本,即便是更高的版本以下安装方式都是可用的。</p>
<p>我当前用的是Ubuntu18.04.6目前使用的是glibc2.27版本,还是主流的PWN Pwn题中的版本,所以选了这个</p>
<pre><code class="language-bash"># 查看glibc版本
ldd --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-1.png" alt="image-20220518105246251" loading="lazy"></p>
<h2 id="ubuntu-os配置">Ubuntu OS配置</h2>
<p>需要下载操作系统和虚拟机的小伙伴一定要认准官网啊,毕竟大家可是搞安全的,要专业!(๑•̀ㅂ•́)و✧</p>
<p>Ubuntu官网:https://ubuntu.com/</p>
<p>VMware Workstation:https://www.vmware.com/</p>
<h3 id="安装vmware-tools">安装Vmware Tools</h3>
<p><strong>VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。</strong></p>
<p>选中当前操Ubuntu虚拟机,点击菜单栏虚拟机-> 安装 Vmware Tools</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-2.png" alt="image-20220517155818188" loading="lazy"></p>
<p>然后打开一个终端,将当前用户临时切换为root账户</p>
<pre><code class="language-bash"># 临时切换root用户权限
sudo su
# vmware-tools被放在/media/用户/VMware Tools目录下,使用命令将其进行解压,然后输出到/tmp目录下,因为media目录下是只读的
tar -zxvf /media/用户名/VMware\ Tools/VMwareTools-xx.x.xx-xxxxx.tar.gz -C /tmp
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-3.png" alt="image-20220517162616646" loading="lazy"></p>
<pre><code class="language-bash"># 切换到解压后的vmware-tools目录下
cd /tmp/vmware-tools-distrib/
# 执行vmware-install.pl文件
./vmware-install.pl
# 提示是否要安装open-vm-tools 这里选择yes
yes
# 安装完成后重启系统
reboot
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-4.png" alt="image-20220517163335776" loading="lazy"></p>
<h3 id="安装net-tools">安装net-tools</h3>
<p><strong>Linux网络基础工具。构成Linux操作系统NET-3网络分布的基础程序集。</strong></p>
<p>net-tools提供了基本的网络相关操作,如ifconfig,而Ubuntu默认没有安装net-tools,所以这里安装一下</p>
<pre><code class="language-bash"># 临时切换到root权限
sudo su
# 更新软件索引并安装net-tools工具
apt update && apt install net-tools
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-5.png" alt="image-20220517170528043" loading="lazy"></p>
<p>安装完成后,可以执行一下ifconfig命令来验证是否安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517170740678.png" alt="image-20220517170740678" loading="lazy"></p>
<h3 id="安装open-vm-tools">安装open-vm-tools</h3>
<p><strong><em>open-vm-tools</em> 是VMwareTools 的开源实现,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能。</strong></p>
<p>open-vm-tools提供VMware 虚拟机文件复制、复制粘贴功能</p>
<pre><code class="language-bash"># 更新软件索引并移除系统中安装过的open-vm-tools
sudo apt update && apt autoremove open-vm-tools
# 安装open-vm-tools --安装过程中一路默认回车即可
sudo apt install open-vm-tools-desktop
# 安装完成后,重启系统
reboot
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517171136138.png" alt="image-20220517171136138" loading="lazy"></p>
<p>重启后,可自由 宿主机<->虚拟机 拖拽文件、复制粘贴等快捷键</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517164400402.png" alt="image-20220517164400402" loading="lazy"></p>
<h3 id="替换软件源">替换软件源</h3>
<p><strong>软件源是指linux系统在线安装的软件包的来源,是操作系统官方发布的软件安装包的一个集合,即应用程序安装仓库。</strong></p>
<p>这里官方源真的太慢了老是安装软件失败,还是换成阿里云的Ubuntu软件源吧</p>
<pre><code class="language-bash"># 临时切换root权限
sudo su
# 备份apt软件源
cp /etc/apt/sources.list /etc/apt/sources.list.old
# 编辑sources.list文件
vi /etc/apt/sources.list
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517171927662.png" alt="image-20220517171927662" loading="lazy"></p>
<p>命令模式下使用dG即可清空文件中的所有内容,然后将以下内容复制到vi中,Ubuntu中粘贴快捷键为ctrl + shift + v</p>
<pre><code>#阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
</code></pre>
<p>然后使用:wq进行保存并退出操作</p>
<pre><code class="language-bash"># 执行该命令验证一下源更换是否成功
apt update
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517172348157.png" alt="image-20220517172348157" loading="lazy"></p>
<p>可以看到包含阿里云的地址,表示更换源成功</p>
<h3 id="安装vim">安装vim</h3>
<p><strong><em>Vim</em>是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。</strong></p>
<p>Ubuntu系统默认带了vi编辑器,但是vim更好用所以安装vim</p>
<pre><code class="language-bash"># 临时切换到root权限
sudo su
# 安装
apt update && apt install vim
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517172729392.png" alt="image-20220517172729392" loading="lazy"></p>
<p>选择Y即可</p>
<h3 id="开启root账户">开启root账户</h3>
<p><strong><em>Root</em>,也称为根用户,是Unix(如Solaris、AIX、BSD)和类UNIX系统(如Linux、QNX等),及Android和iOS移动设备系统中的唯一的超级用户,</strong></p>
<p>开启Ubuntu root权限 -> Ubuntu默认禁用root账户,只能临时使用root权限,这样不方便我们个人使用所以开启root账户</p>
<p>首先重置root密码</p>
<pre><code class="language-bash"># 重置root账户密码
sudo passwd root
# 输入当前用户密码
# password for xxx:
# 输入要设置的root账户密码
# Enter new UNIX password:
# 重新输入root账户密码
# Retype new UNIX password:
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517154004294.png" alt="image-20220517154004294" loading="lazy"></p>
<p>提示passwd: password updated successfully 表示密码修改完成</p>
<p>打开/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件,文件末尾增加两行:</p>
<pre><code class="language-bash"># 临时切换root权限
sudo su
# 使用vim编辑器打开该文件
vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
# 将以下内容追加到文件中
greeter-show-manual-login=true
all-guest=false
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517173811667.png" alt="image-20220517173811667" loading="lazy"></p>
<p>然后:wq 退出即可</p>
<pre><code class="language-bash"># 编辑gdm-autologin文件 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-autologin
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174123656.png" alt="image-20220517174123656" loading="lazy"></p>
<p>然后:wq保存退出即可</p>
<pre><code class="language-bash"># 编辑gdm-password 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-password
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174251769.png" alt="image-20220517174251769" loading="lazy"></p>
<p>然后:wq保存退出即可</p>
<pre><code class="language-bash"># 编辑.profile文件
vim /root/.profile
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174419406.png" alt="image-20220517174419406" loading="lazy"></p>
<pre><code class="language-bash"># 将原来的 mesg n || true注释掉,然后替换成tty -s&&mesg n || true
# 如果没有mesg n || true,那么就在文件末尾添加tty -s&&mesg n || true
tty -s&&mesg n || true
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174558975.png" alt="image-20220517174558975" loading="lazy"></p>
<p>然后:wq保存退出即可</p>
<p>重启系统,即可使用root账户登录,点Not listed,Username 输入 root,Password输入账户密码即可</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174831363.png" alt="image-20220517174831363" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174924160.png" alt="image-20220517174924160" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517174948252.png" alt="image-20220517174948252" loading="lazy"></p>
<p>此时再次打开的终端就是root权限的了,这是因为我们当前登录的用户是root</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517175115055.png" alt="image-20220517175115055" loading="lazy"></p>
<h2 id="其它环境配置">其它环境配置</h2>
<h3 id="安装git">安装git</h3>
<p><strong>Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的一切事务。</strong></p>
<p>平常使用的最多的功能是可以拉取github、gitee等开源社区的项目</p>
<pre><code class="language-bash"># 更新软件索引并安装git工具
sudo apt update && apt install git
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517175918912.png" alt="image-20220517175918912" loading="lazy"></p>
<p>检查以下安装是否成功</p>
<pre><code class="language-bash"># git检查版本命令 用来验证安装是否成功
git --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517180023716.png" alt="image-20220517180023716" loading="lazy"></p>
<p>有类似这样的输出表示安装成功</p>
<h3 id="安装gcc">安装gcc</h3>
<p><strong><em>GCC</em>(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。</strong></p>
<p>对于个人用户或开发者而言主要可以用来编译一些c语言代码,自己想要编写一些demo的时候需要gcc进行编译</p>
<pre><code class="language-bash"># 使用root权限安装gcc
sudo apt update && apt install gcc
# 安装完成后使用命令验证安装是否成功
gcc --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517181533203.png" alt="image-20220517181533203" loading="lazy"></p>
<h3 id="安装python3-pip">安装python3-pip</h3>
<p><strong><em>pip</em> 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。</strong></p>
<p>python包管理工具</p>
<pre><code class="language-bash"># 安装pip
sudo apt update && apt install python3-pip
# 安装完成后使用命令验证安装是否成功
pip3 --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517213853047.png" alt="image-20220517213853047" loading="lazy"></p>
<h3 id="安装python3">安装python3</h3>
<p><strong>Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。</strong></p>
<p>python运行环境,这就不用解释了吧,运行python代码的</p>
<pre><code class="language-bash"># 安装python
sudo apt update && apt install python3
# 安装完成后使用命令验证安装是否成功
python3 --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517214322640.png" alt="image-20220517214322640" loading="lazy"></p>
<h3 id="安装qemu">安装qemu</h3>
<p><strong><em>Qemu</em>可以看成一款虚拟机,他可以模拟很多CPU架构。</strong></p>
<p>QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛</p>
<pre><code class="language-bash"># 安装qemu
sudo apt update && sudo apt install qemu-user qemu-system
# 安装完成后使用命令验证安装是否成功
qemu-system-x86_64 --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517214713261.png" alt="image-20220517214713261" loading="lazy"></p>
<h3 id="安装gdb-multiarch">安装gdb-multiarch</h3>
<p>用作gdb客户端进行调试,是任何架构的通用客户端</p>
<pre><code class="language-bash"># 安装gdb-multiarch
sudo apt update && sudo apt install gdb-multiarch
# 安装完成后使用命令验证安装是否成功
gdb-multiarch --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220517215209859.png" alt="image-20220517215209859" loading="lazy"></p>
<h2 id="pwn工具">Pwn工具</h2>
<p>在主目录下创建一个存放pwn工具的目录,如env,这样就能将工具文件统一进行管理</p>
<pre><code class="language-bash"># 在主目录下创建Env(envirment)文件夹
mkdir ~/Env
</code></pre>
<h3 id="安装pwntools">安装pwntools</h3>
<p><strong><em>pwntools是</em>一个CTF框架和漏洞利用开发库,用Python开发,旨在让使用者简单快速的编写exploit。</strong></p>
<p>pwntools有两种安装方法,一种是git项目后安装,另一种是pip直接安装。这里我们把pwntools git下来,但是用pip安装,因为后续的工具需要pwntools项目包里的脚本,pip安装不会出错。安装过程时间较长,保持网络状态良好</p>
<pre><code class="language-bash"># clone git仓库源码
git clone https://github.com/Gallopsled/pwntools.git
sudo apt update && apt install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
pip3 list | grep pwntools
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518084824767.png" alt="image-20220518084824767" loading="lazy"></p>
<h3 id="安装pwndbgpedagef">安装pwndbg、peda、gef</h3>
<p><strong>pwndbg是一个gdb的插件,在ctf中pwn题目中使用非常方便,尤其是对堆的查看,有很多独有的指令。</strong></p>
<p><strong>peda一款实用的GDB插件 增强gdb的显示:在调试过程中着色并显示反汇编代码,寄存器和内存信息。</strong></p>
<p><strong>gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。gef做为gdb的一个插件,方便快速调试使用。</strong></p>
<pre><code class="language-bash"># 拉取代码 -> 如果拉取不下来的话,可以先把这三个项目frok到自己的github仓库,然后使用ssh拉取即可
# -> 或者使用代理网络等
git clone https://github.com/pwndbg/pwndbg.git
git clone https://github.com/longld/peda.git
git clone https://github.com/hugsy/gef.git
# 切换到pwndbg目录下
cd ~/tools/pwndbg
# 安装
./setup.sh
# 安装依赖插件
pip3 install keystone-engine ropper keystone-engine
# 可以通过编辑gdbinit挂载插件
vim ~/.gdbinit
# 这个根据自己的目录来就可以了
source /root/Env/pwndbg/gdbinit.py
#source /root/Env/peda/peda.py
#source /root/Env/gef/gef.py
#选中任意一个脚本后,输入gdb即可使用
gdb
</code></pre>
<p>选择其中任何一个插件后,然后将其它两个插件注释掉就好了,比如想使用pwndbg的时候:</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518103728780.png" alt="image-20220518103728780" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518104146480.png" alt="image-20220518104146480" loading="lazy"></p>
<p>使用peda:</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518104619766.png" alt="image-20220518104619766" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518104719087.png" alt="image-20220518104719087" loading="lazy"></p>
<p>使用gef:</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518104748481.png" alt="image-20220518104748481" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518104812393.png" alt="image-20220518104812393" loading="lazy"></p>
<h3 id="安装ropgadget">安装ROPgadget</h3>
<p><strong>这个工具让你在你的二进制文件上搜索你的小工具,以方便你的ROP开发。ROPgadget支持ELF/PE/Mach-O格式的x86、x64、ARM、ARM64、...</strong></p>
<p>其作用和ropper差不多,不过ROP因为是一个老牌的工具,所以使用的人较多一些</p>
<pre><code class="language-bash"># 安装依赖
sudo pip3 install capstone
cd ~/Env
# 下载ROPgadget
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
# 执行安装
python3 setup.py install
</code></pre>
<p>直接执行ROPgadget可能会发生以下错误:</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220521145104936.png" alt="image-20220521145104936" loading="lazy"></p>
<p>解决方案:</p>
<pre><code class="language-bash"># python3执行目录脚本缺失,所以需要把ROPGadget下的scripts文件夹下的脚本,而因为安装版本不同,所以你应该将我的目录改成你系统中对应的目录,主要是python路径以及ROPGadget版本
sudo cp -r scripts /usr/local/lib/python3.6/dist-packages/ROPGadget-6.7.dist-info
</code></pre>
<p>再次尝试执行:</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220521145149341.png" alt="image-20220521145149341" loading="lazy"></p>
<h3 id="安装seccomp-tools">安装seccomp-tools</h3>
<p><strong>seccomp-tools可以分析程序的seccomp状态,哪些被系统被禁用了安装</strong></p>
<p>该项目旨在(但不限于)分析CTF pwn挑战中的seccomp沙盒。有些特性可能是特定于ctf的,但对于分析真实情况下的seccomp仍然有用</p>
<pre><code class="language-ruby"># 安装seccomp-tools
gem install seccomp-tools
# 安装完成后检查安装是否成功
seccomp-tools --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518105956313.png" alt="image-20220518105956313" loading="lazy"></p>
<h3 id="安装libcsearcher">安装LibcSearcher</h3>
<p><strong>LibcSearcher是针对pwn做的python库,在做pwn题时寻找libc版本非常好用,使用方式也非常简单</strong></p>
<p>这是针对CTF比赛所做的小工具,在泄露了Libc中的某一个函数地址后,常常为不知道对方所使用的操作系统及libc的版本而苦恼,常规方法就是挨个把常见的Libc.so从系统里拿出来,与泄露的地址对比一下最后12位(LibcSearcher自带libc-database)</p>
<pre><code class="language-bash"># 克隆代码
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
# 安装
python3 setup.py develop
# 查看是否安装成功
pip3 list | grep LibcSearcher
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518111241855.png" alt="image-20220518111241855" loading="lazy"></p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518111216459.png" alt="image-20220518111216459" loading="lazy"></p>
<h3 id="安装patchelf">安装patchelf</h3>
<p><strong>patchelf 是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH</strong></p>
<p>这个真的是非常滴好用,因为在做题的时候无法避免会出现多版本libc题的情况,但是如果按照libc版本重装多个虚拟机的话实在是太费劲了,patchelf就可以直接修改题目所需的libc</p>
<pre><code class="language-bash"># 更新索引并安装patchelf
sudo apt update && apt install patchelf
# 验证安装是否成功
patchelf --version
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518111457150.png" alt="image-20220518111457150" loading="lazy"></p>
<h3 id="安装ropper">安装ropper</h3>
<p><strong>你可以使用ropper来显示不同文件格式的二进制文件信息,你可以搜索小工具来建立不同的rop链。</strong></p>
<p>主要为了方便我们来找到一些可用的ROP代码段的工具</p>
<pre><code class="language-bash"># 安装依赖项capstone
pip3 install capstone
# 安装依赖项filebytes
pip3 install filebytes
# 拉取源代码
git clone https://github.com/sashs/ropper.git
# 切换到目录下
cd roppper
# 如果setup.py没有执行权限,先赋予执行权限
chmod +x setup.py
python3 setup.py install
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220521141802144.png" alt="image-20220521141802144" loading="lazy"></p>
<h3 id="安装one_gadget">安装one_gadget</h3>
<p><strong>OneGadget使用符号执行来寻找小工具的约束条件,以获得成功。</strong></p>
<p>主要是用来找寻libc中的可直接被使用的shellcode的地址</p>
<pre><code class="language-bash"># 更新并安装依赖
sudo apt update && apt -y ruby ruby-dev
# 安装one_gadget
sudo gem install one_gadget
</code></pre>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220521143147843.png" alt="image-20220521143147843" loading="lazy"></p>
<h2 id="安装arm-pwn">安装ARM PWN</h2>
<p><strong>基于ARM架构的PWN</strong></p>
<p>ARM软件包 -> 具备ARM交叉编译gcc与ARM程序动态链接库</p>
<h3 id="安装gcc-arm-linux-gnueabi">安装gcc-arm-linux-gnueabi</h3>
<p><strong>适用于 Arm Cortex-A 系列芯片,针对 32 位芯片,使用的是 glibc 库。可以用来编译 u-boot、linux kernel 以及应用程序。</strong></p>
<pre><code class="language-bash"># 安装gcc-arm-linux-gnueabi
sudo apt update && apt install gcc-arm-linux-gnueabi
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
arm-linux-gnueabi
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518113622872.png" alt="image-20220518113622872" loading="lazy"></p>
<h3 id="安装gcc-aarch64-linux-gnu">安装gcc-aarch64-linux-gnu</h3>
<p><strong>适用于 Arm Cortex-A 系列芯片,针对 64 位芯片,使用的是 glibc 库。可以用来编译 u-boot、linux kernel 以及应用程序。</strong></p>
<pre><code class="language-bash"># 安装gcc-aarch64-linux-gnu
sudo apt update && apt install gcc-aarch64-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
aarch64-linux-gnu
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518113746453.png" alt="image-20220518113746453" loading="lazy"></p>
<h2 id="安装mips-pwn">安装MIPS PWN</h2>
<p><strong>基于MIPS架构的PWN</strong></p>
<p>具备MIPS交叉编译gcc与MIPS程序动态链接库</p>
<h3 id="安装gcc-mips-linux-gnu">安装gcc-mips-linux-gnu</h3>
<p><strong>这是一个依赖包,为mips架构提供默认的GNU C交叉编译器。</strong></p>
<pre><code class="language-bash"># 安装gcc-mips-linux-gnu
sudo apt update && apt install gcc-mips-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips-linux-gnu-
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518114234351.png" alt="image-20220518114234351" loading="lazy"></p>
<h3 id="安装gcc-mipsel-linux-gnu">安装gcc-mipsel-linux-gnu</h3>
<p><strong>这是一个为mipsel架构提供默认GNU C交叉编译器的依赖包。</strong></p>
<pre><code class="language-bash"># 安装gcc-mipsel-linux-gnu
sudo apt update && apt install gcc-mipsel-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mipsel-linux-gnu
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518114412626.png" alt="image-20220518114412626" loading="lazy"></p>
<h3 id="安装gcc-mips64-linux-gnuabi64">安装gcc-mips64-linux-gnuabi64</h3>
<p><strong>这是一个依赖包,为mips64架构提供默认的GNU C交叉编译器。</strong></p>
<pre><code class="language-bash"># 安装gcc-mips64-linux-gnuabi64
sudo apt update && apt install gcc-mips64-linux-gnuabi64
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips64-linux-gnuabi64
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518114640470.png" alt="image-20220518114640470" loading="lazy"></p>
<h3 id="安装gcc-mips64el-linux-gnuabi64">安装gcc-mips64el-linux-gnuabi64</h3>
<p><strong>这是一个依赖包,为mips64el架构提供默认的GNU C交叉编译器。</strong></p>
<pre><code class="language-bash"># 安装gcc-mips64el-linux-gnuabi64
sudo apt update && apt install gcc-mips64el-linux-gnuabi64
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips64el-linux-gnuabi64
</code></pre>
<p>有以下内容说明安装成功</p>
<p><img src="https://erosionzhu.aiur.site/blog/image-20220518114834781.png" alt="image-20220518114834781" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/erosion2020/p/16285910.html
頁:
[1]