一个自动patch libc的小工具

auto_patch_glibc


项目简介:

本项目旨在,更加便捷的使用glibc-all-in-one(https://github.com/matrix1001/glibc-all-in-one) 对赛题进行patch,目前只支持amd64、i386程序的自动化patch


使用方法:

在赛题目录输入需要patch的libc版本如:

❯ ls
glibcpatch.sh  libc-2.23.so  ret2libc3
❯ ./glibcpatch.sh 2.23
? 检测到多个 ELF 文件,请选择:
1) libc-2.23.so
2) ret2libc3
<span class="pl-c">#? 2</span>
使用并重命名 libc-<span class="pl-k">*</span>.so → libc.so.6
? 使用本地 glibc 补全缺失项...
✅ 补全 ld.so
✅ [ret2libc3] patch 成功!已使用 glibc: 2.23,架构: i386

有三种情况:

  1. 题目给了libc文件没给ld文件,则从glibc-all-in-one中获取ld文件
  2. 题目给了libc文件和ld文件,则直接使用题目的文件
  3. 题目只给了一个ELF文件,则从glibc-all-in-one中获取所有的

注意:

本项目依赖glibc-all-in-one请确定其部署完毕:

​ 确定执行了下载脚本,将libc文件下载到glibc-all-in-one目录下的libs中

​ glib-all-in-one使用方法:https://github.com/matrix1001/glibc-all-in-one


部署方法:

部署glibc-all-in-one:

<span class="pl-c">#从github上拉取glibc-all-in-one</span>
git clone https://github.com/matrix1001/glibc-all-in-one.git
<span class="pl-c1">cd</span> glibc-all-in-one
<span class="pl-c">#更新libc列表</span>
python3 ./update_list
<span class="pl-c">#拉取本项目:</span>
git clone https://github.com/yishengsss/auto_patch_glibc.git
<span class="pl-c">#复制到对应目录</span>
cp ./auto_patch_glibc/download_list.sh ./
<span class="pl-c">#赋予执行权限</span>
chmod 755 ./download_list.sh
bash ./download_list.sh

使用glibcpatch:

<span class="pl-c">#进入到本项目文件夹给予权限:</span>
<span class="pl-c1">cd</span> auto_patch_glibc/
chmod 755 ./glibcpatch
<span class="pl-c">#编辑脚本头部的BASE_DIR为你自己的安装位置:</span>
vim ./glibcpatch
<span class="pl-c"># ==================== vim ========================</span>
<span class="pl-c">#!/bin/bash</span>
VERSION_INPUT=<span class="pl-s"><span class="pl-pds"></span><span class="pl-smi">$1</span><span class="pl-pds"></span></span>

BASE_DIR=<span class="pl-s"><span class="pl-pds"></span>目录路径<span class="pl-pds"></span></span>

LIBS_DIR=<span class="pl-s"><span class="pl-pds"></span><span class="pl-smi">$BASE_DIR</span>/libs<span class="pl-pds"></span></span>
<span class="pl-k">if</span> [[ <span class="pl-k">-z</span> <span class="pl-s"><span class="pl-pds"></span><span class="pl-smi">$VERSION_INPUT</span><span class="pl-pds"></span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span>
  <span class="pl-c1">echo</span> <span class="pl-s"><span class="pl-pds"></span>用法: glibcpatch <glibc版本号>,如 glibcpatch 2.23<span class="pl-pds"></span></span>
  <span class="pl-c1">exit</span> 1
<span class="pl-k">fi</span>
<span class="pl-c"># ==================== vim ========================</span>
<span class="pl-c">#记得输入:wq退出</span>

<span class="pl-c">#让glibcpatch全局使用:</span>
cp ./glibcpatch.sh /usr/local/bin/
<span class="pl-c">#部署完毕了,愉快地使用吧</span>

使用示范:

filefile

上一篇 【学习笔记】在chroot-ubuntu中使用宝塔的supervisor实现可视化控制
下一篇 第十六届 蓝桥杯 网安赛道省赛wp
Keason

Keason管理员

flag{fkxqsVIVO50tmgbd}

本月创作热力图