动态加载器
0x01 介绍
关于动态链接器的描述如下:
You have invoked `ld.so', the helper program for shared library executables.This program usually lives in the file `/lib/ld.so', and special directivesin executable files using ELF shared libraries tell the system's programloader to load the helper program from this file. This helper program loadsthe shared libraries needed by the program executable, prepares the programto run, and runs it. You may invoke this helper program directly from thecommand line to load and run an ELF executable file; this is like executingthat file itself, but always uses this helper program from the file youspecified, instead of the helper program file specified in the executablefile you run. This is mostly of use for maintainers to test new versionsof this helper program; chances are you did not intend to run this program.
你已调用了 ld.so
,这是共享库可执行文件的辅助程序。这个程序通常位于 /lib/ld.so
文件中,使用 ELF 共享库的可执行文件中的特殊指令告诉系统的程序加载器从该文件加载辅助程序。这个辅助程序加载程序可执行文件所需的共享库,准备程序运行并执行它。你可以直接从命令行调用这个辅助程序来加载和运行 ELF 可执行文件;这就像执行该文件本身,但总是使用你指定的文件中的这个辅助程序,而不是你运行的可执行文件中指定的辅助程序文件。这主要是供维护人员测试该辅助程序的新版本;你可能并不打算运行这个程序。
0x02 回到题目
在题目中,我们所获取的shell的权限无法执行readflag
文件
根据描述利用动态链接器可以辅助运行程序,利用这一特性,我们就可以尝试用动态链接器来运行
命令ldd
可以帮助我们查找到程序所链接的库或对象
ldd prints the shared objects (shared libraries) required by each program or shared object specified on the command line.
readflag
文件链接的加载器是ld-linux-x86-64.so.2
最后运行下面的命令就可以执行程序
/lib64/ld-linux-x86-64.so.2 /readflag
参考文章:
http://nicephil.blinkenshell.org/my_book/ch07s07.html
原文始发于微信公众号(CatalyzeSec):【CTF】Linux-动态链接器
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论