flag文件名未知

getdents

getdents 是 Linux 系统调用,用于读取目录的内容。与常用的高级文件操作函数(如 readdir)相比,getdents 提供了更底层的访问方式,它直接返回目录项的信息。这通常用于在需要更高性能或对系统调用进行更精细控制的场景中。

题目只能使用read open write close函数,和以下函数:

  • gendents:用于目录遍历,可以用于绕过flag文件名未知情况。
  • mprotect:修改权限,用来绕过NX保护
  • exit_group:Linux独有的系统调用,调用后会使得进程的所有线程都退出。

使用

  1. 打开存有flag文件的目录:open("/home/ctf", 0),返回文件描述符为3
  2. 遍历目录:getdents(3, buf, 0x1000)

    遍历3描述符中的内容,将文件名存在buf中,长度最大为0x1000字节。

  3. 打印所有文件名:使用write(1, buf, 0x1000),找到可能是flag的文件