Patchelf & Glibc-all-in-one Combo
Patchelf & Glibc-all-in-one Combo
這篇主要會提到平常在模擬 Pwn 遠端環境的好用組合技。
0x1 Introduction
今天會用 pwnable.tw 的 dubblesort 示範。patchelf
和 glibc-all-in-one
安裝方式如下:
patchelf
1 | └─$ sudo apt install patchelf |
glibc-all-in-one
1 | └─$ git clone https://github.com/matrix1001/glibc-all-in-one.git |
0x2 Demo
- 首先我們要知道題目附給我們的 libc 是什麼版本的:從上面可以得知版本是:
1
2
3
4└─$ strings libc_32.so.6 | grep GNU
GNU C Library (Ubuntu GLIBC 2.23-0ubuntu5) stable release version 2.23, by Roland McGrath et al.
Compiled by GNU CC version 5.4.0 20160609.
GNU Libidn by Simon Josefsson2.23-0ubuntu5
。 - 接著我們要用 glibc-all-in-one 去找到對應版本需要的文件:看了一下會發現 list 沒有我們要的版本,可以在 https://launchpad.net/ubuntu/+source/glibc 找,或是直接打對應版本的網址 https://launchpad.net/ubuntu/+source/glibc/2.23-0ubuntu5 。
1
2
3└─$ cd glibc-all-in-one/
└─$ ./update_list
└─$ cat list
右側的Builds
裡面找到裡面找到題目使用的 CPU 架構。這題為1
2└─$ file dubblesort
dubblesort: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter ./ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=12a217baf7cbdf2bb5c344ff14adcf7703672fb1, strippedIntel 80386
。那如果 list 有你想要的版本可以直接如下操作:1
2
3
4
5
6└─$ cd ~/glibc-all-in-one/debs
└─$ wget http://launchpadlibrarian.net/293727477/libc6_2.23-0ubuntu5_i386.deb
└─$ mkdir ~/glibc-all-in-one/libs/2.23-0ubuntu5_i386
└─$ cd ~/glibc-all-in-one/
└─$ ./extract debs/libc6_2.23-0ubuntu5_i386.deb libs/2.23-0ubuntu5_i386
└─$ cd ~/glibc-all-in-one/libs/2.23-0ubuntu5_i386一樣會在1
└─$ ./download 2.23-0ubuntu11.3_amd64
~/glibc-all-in-one/libs
下看到對應的資料夾。 ldd
:
全名是:List Dynamic Dependencies。可以查看一個程式在運行時需要鏈接的所有共享函式庫。用法如下:可以看到目前都是用到本地1
2
3
4└─$ ldd dubblesort
linux-gate.so.1 (0xf7f9e000)
libc.so.6 => /lib32/libc.so.6 (0xf7c00000)
/lib/ld-linux.so.2 (0xf7fa0000)/lib32
還有/lib
下的檔案 ,我們可以在patchelf
後來觀察一下變化。patchelf
:1
2
3
4
5
6
7└─$ cp /home/kazma/glibc-all-in-one/libs/2.23-0ubuntu5_i386/ld-2.23.so ./
└─$ patchelf --set-interpreter ./ld-2.23.so dubblesort
└─$ patchelf --replace-needed libc.so.6 ./libc_32.so.6 dubblesort
└─$ ldd dubblesort
linux-gate.so.1 (0xf7fba000)
./libc_32.so.6 (0xf7df7000)
./ld-2.23.so => /lib/ld-linux.so.2 (0xf7fbc000)- 成功執行:以上是模擬遠端環境的一個簡單示範,之後有遇到其他特殊狀況會持續更新在這邊,有問題也歡迎找我討論 ~
1
2└─$ ./dubblesort
What your name :
- Title: Patchelf & Glibc-all-in-one Combo
- Author: kazma
- Created at : 2024-04-19 09:05:57
- Updated at : 2024-04-25 21:15:05
- Link: https://kazma.tw/2024/04/19/Patchelf-Glibc-all-in-one-Combo/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments