ctf-pwn-patchelf-用题目给的libc运行二进制文件

用给定的libc进行调试

  • 首先根据题目给你的libc,查找相应版本的连接器

    ctf-pwn-patchelf-用题目给的libc运行二进制文件

  • 然后去glibc-all-in-one中下载相应的ld文件

    • glibc-all-in-one安装步骤

      https://github.com/matrix1001/glibc-all-in-one
      
    • 使用

      • 查看各unbuntu版本的glibc

        ./update_list
        cat list
        

        ctf-pwn-patchelf-用题目给的libc运行二进制文件

      • 下载对应版本的glibc

        ./download 2.27-3ubuntu1_amd64
        

        ctf-pwn-patchelf-用题目给的libc运行二进制文件

      • 下载好的glibc在lib文件夹中

        ctf-pwn-patchelf-用题目给的libc运行二进制文件

      • 然后复制ld文件到pwn题目录下,此命令我是在题目终端下执行的,题目文件夹下面应该有这三个文件

        cp ~/ctf2021/tools/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/ld-2.27.so ./ld-2.27.so
        

        ctf-pwn-patchelf-用题目给的libc运行二进制文件

  • 有了libc文件和ld文件,就可以使用patchelf,修改pwn文件的执行环境

    • patchelf安装,可以直接下载realse版本

      https://github.com/NixOS/patchelf
      
    • 查看,pwn原本的libc和ld

      ldd ldd Mynote_Max
      

      ctf-pwn-patchelf-用题目给的libc运行二进制文件

    • 替换libc文件

      patchelf --replace-needed libc.so.6 ./libc-2.27.so ./Mynote_Max
      -------------------------原本的libc----要替换的libc-----pwn文件       
      

      ctf-pwn-patchelf-用题目给的libc运行二进制文件

    • 设置ld文件

      patchelf --set-interpreter ./ld-2.27.so ./Mynote_Max
      ---------------------------对应的ld文件----pwn文件
      

      ctf-pwn-patchelf-用题目给的libc运行二进制文件

  • 执行一下文件,应该是可以运行的,如果不行,很可能是ld与libc不对应,也可能是ld和libc没有执行权限

    ctf-pwn-patchelf-用题目给的libc运行二进制文件

上一篇:CTF-Streamgame2-writeup


下一篇:【线下AWD批量修改ctf用户密码】2021宁波市赛AWD