ldd 用于查看程序运行所需要的共享库(动态链接库),在ctf中一般用于查看本地libc库版本 ​

ben@ubuntu:~/ctf/stack-wiki/ret2libc/ret2libc3$ ldd ret2libc3
    linux-gate.so.1 (0xf7fd4000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7ddc000)
    /lib/ld-linux.so.2 (0xf7fd6000)
  • 结果的第一列是程序需要的依赖的库(libc.so.6)

  • 结果的第二列是系统给程序提供的库(/lib/i386-linux-gnu/libc.so.6)

  • 结果的第三列是库加载的开始位置(0xf7ddc000),如下所示:以0xf7开头的为libc文件

    pwndbg> vmmap
    LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
     0x8048000  0x8049000 r-xp     1000 0      /home/ben/ctf/stack-wiki/ret2libc/ret2libc3/ret2libc3
     0x8049000  0x804b000 rw-p     2000 0      /home/ben/ctf/stack-wiki/ret2libc/ret2libc3/ret2libc3
    0xf7fd1000 0xf7fd4000 r--p     3000 0      [vvar]
    0xf7fd4000 0xf7fd6000 r-xp     2000 0      [vdso]
    0xf7fd6000 0xf7ffc000 r-xp    26000 0      /lib/i386-linux-gnu/ld-2.27.so
    0xf7ffc000 0xf7ffe000 rw-p     2000 25000  /lib/i386-linux-gnu/ld-2.27.so
    0xfffdd000 0xffffe000 rw-p    21000 0      [stack]
  • 另外提一个关于ldd的小技巧:如果程序依赖的某个库文件找不到,通过该命令,对比第一列和第二列即可迅速锁定问题所在。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐