首页 > 其他分享 >[pwn之路]patchelf之后,加载符号表!

[pwn之路]patchelf之后,加载符号表!

时间:2023-10-03 23:45:04浏览次数:48  
标签:符号表 COLOR file path pwn patchelf folder 加载

前言

当你在进行二进制漏洞学习和利用时,经常需要使用调试工具来分析和理解程序的内部工作。在之前的交流中,我们提到了如何使用patchelf来修改二进制文件[Pwn之路]根据所给库,获得远程同环境——使用patchelf的正确姿势,以适应调试的需求,但没有详细介绍如何加载符号表。实际上,对于学习和利用二进制漏洞,符号表是非常重要的资源,因为它们提供了关键的函数和变量名称,使调试和分析更加轻松。

有些人可能会建议使用虚拟机来解决这个问题,但这通常会涉及到一些繁琐的设置和维护工作。幸运的是,你可以利用强大的工具如pwndbg以及glibc-all-in-one项目,来轻松加载符号表,无需复杂的虚拟机设置。

在下文中,我们将详细介绍如何使用pwndbg的加载符号表功能,以及如何结合glibc-all-in-one项目自动下载符号表来简化调试过程。这个方法不仅方便,还能帮助你更好地理解和利用二进制漏洞,提高你的漏洞研究和利用技能。让我们一起来探索这个强大的调试工具和资源吧!

脚本获取,配置

执行vim ~/.pwndbg/gdbinit.py
然后复制下方代码到最底下,然后输入:wq回车,保存退出。

import gdb
import os

# ANSI颜色转义码
COLOR_GREEN = "\033[32m"  # 绿色
COLOR_RED = "\033[31m"    # 红色
COLOR_RESET = "\033[0m"   # 重置颜色

# 创建一个自定义的GDB命令,用于批量加载文件夹下的所有符号文件
class LoadSymbolsFromFolder(gdb.Command):
    def __init__(self):
        super(LoadSymbolsFromFolder, self).__init__("loadfolder", gdb.COMMAND_USER)

    def invoke(self, arg, from_tty):
        # 解析参数为文件夹路径
        folder_path = arg.strip()

        if not folder_path:
            print("Usage: loadfolder <folder_path>")
            return

        # 检查文件夹是否存在
        if not os.path.exists(folder_path) or not os.path.isdir(folder_path):
            print(COLOR_RED + "[-] Folder does not exist: {}".format(folder_path) + COLOR_RESET)
            return

        # 获取文件夹下的所有文件
        files = os.listdir(folder_path)

        if not files:
            print(COLOR_RED + "[-] No files found in folder: {}".format(folder_path) + COLOR_RESET)
            return

        # 遍历文件夹下的所有文件并尝试加载它们的符号表
        for file in files:
            file_path = os.path.join(folder_path, file)
            try:
                gdb.execute("add-symbol-file {}".format(file_path))
                print(COLOR_GREEN + "[+] Loaded symbols " + COLOR_RESET + "from {}".format(file_path))
            except gdb.error as e:
                print(COLOR_RED + "[-] Failed to load" + COLOR_RESET + " symbols from {}: {}".format(file_path, e))

LoadSymbolsFromFolder()

使用

运行pwndbg时,输入loadfolder /path/to/glibcallinone/libs/your_glibc_version/.debug/.build-id/
比如我最近在做一道题目,运行的是loadfolder /home/N1nE/ctf/tools/glibcallinone/libs/2.34-0ubuntu3_amd64/.debug/.build-id/

标签:符号表,COLOR,file,path,pwn,patchelf,folder,加载
From: https://www.cnblogs.com/9man/p/17741818.html

相关文章

  • Matlab : 符号表达式
    MATLAB强大的符号运算基于符号运算工具箱,具体请见其 官方文档.创建符号变量创建符号数字使用sym函数可以创建符号数字.使用符号数字可以精确地保存无理数,不会产生误差.sym(1/3) %得到1/31/3 %得到0.3333将无理数保存为符号数字可以避免将其转换为浮点数的误差:使用符号数......
  • MoeCTF2023 wp--pwn篇
    五、Pwn1.Pwn入门指北CHALLENGE:Pwn入门指北DESCRIPTION:建议:萌新朋友不要看完指北交上flag就扔掉!!Tips:本指北附件在“通知栏”内的“比赛客服群”中,请加群了解更多信息2.test_ncCHALLENGE:test_ncDESCRIPTION:你知道nc是什么吗3.baby_caculatorCHALLENGE:baby_calcul......
  • PWN环境搭建
    PWN环境搭建1、前置条件已经安好了基本的Ubuntu20.04的64位系统,我给的硬盘为35G,镜像源为阿里源。vim,git,gcc,net-tools,ssh-server等基本工具gcc没安装的,直接sudoaptinstallgcc.1.1pip换源root@hacker:/#cd$HOMEroot@hacker:~#lssnaproot@hacker:~#mkdir-p......
  • buu pwn wp(持续更新)
    1、warmup_csaw_2016main函数如下__int64__fastcallmain(inta1,char**a2,char**a3){chars[64];//[rsp+0h][rbp-80h]BYREFcharv5[64];//[rsp+40h][rbp-40h]BYREFwrite(1,"-WarmUp-\n",0xAuLL);write(1,"WOW:",4uLL);......
  • PWN做题笔记1
    原题在某个名字被51cto屏蔽了的CTF刷题网站,题目为ret2text题目属于栈溢出给出了地址和端口,压缩包中有一个二进制程序pwnfile命令可以看到是64位ELF程序,这里pwn是文件名checksec发现没有开启任何安全措施程序运行如下:ida64反汇编,发现gets输入没有边界检查0x70,存在注入:secure函数调用......
  • pWnOS2
    这个靶机默认静态ip为10.10.10.100,所以不能使用VMNAT模式,将kali和靶机网络同时设置为仅主机模式,并在虚拟网络编辑器中设置仅主机模式网段为10.10.10.0。重新启动虚拟机,就可以发现可以扫描到靶机了。kaliIP:10.10.10.128靶机IP:10.10.10.100然后老规矩,先进行信息收集工作。先用......
  • 新PWN手必备环境(附详细步骤)
    欲想善其事必先利其器,无论是网络安全何种方向,都有自己经常用的工具环境,那么PWN也一样,拥有一个完善的工具环境,可以节约我们很多事,也不会在关键时候因为外在条件而卡壳,可谓逢山开山,逢水架桥,成为一个牛逼pwn手。系统选择系统选择肯定是Ubuntu了,毫无疑问,直接去linux官网下载,版本可选......
  • [计算机学习]PWN 入门启程
    2023年8月10日开通开通了ctf.show的PWN入门课程。之前是去年打ctf比赛,买过VIP。题目很多,挺适合新手入门,如果你也要学习打CTF,建议可以买一个VIP会员,题目很多,可以一关一关自己练习。如果纯萌新,也可以买一个私教课程。2023年8月28日第一次写writeupPWN0使用MobaXterm.exe连接题......
  • Pwn-guess[攻防世界]
    0x01基础分析题目中共有两个附件guess和libc-2.27.so先运行guess:captain@ubuntu:~/Desktop$./guess1.Logintoguess2.ExitChoice:和密码账户相关,应该是硬编码写入了程序中,下面通过IDA分析尝试获取密码账户0x02IDA逆向分析一、main函数__int64__fastcallmain(......
  • 解析EFL文件中符号表读取
    符号表表头Linux中使用指令查看完整读取elf文件readelf-aexample.elfNum:ValueSizeTypeBindVisNdxName代表含义Num符号编号Value符号值,取决于上下文Size符号值Type符号类型,例如函数、对象、文件(源文件名称)、节(内存节)或未指定类型......