【问题标题】:Using ftok for message queue将 ftok 用于消息队列
【发布时间】:2015-04-19 18:28:40
【问题描述】:

引用系统 V 消息队列上的 tutorial

它包含ftok 的以下示例:

#include <sys/msg.h>

key = ftok("/home/beej/somefile", 'b');
msqid = msgget(key, 0666 | IPC_CREAT);

为什么进程必须读取文件(/home/beej/somefile)才能生成消息队列的密钥?

另外,攻击者是否很容易猜测消息队列的键值(键的类型很长)?

【问题讨论】:

    标签: ipc


    【解决方案1】:

    截至ftok 的手册页,文件应该可以访问(不可读):

    ftok() 函数使用由给定路径名命名的文件的标识(必须引用现有的、可访问的文件)

    至少进程必须统计它。您可以使用完全不可读的文件但在您可以访问的目录中测试它,以及在您无法访问的目录中的文字可读文件。
    根据攻击者的问题,如果攻击者知道使用的文件并尝试再次根据手册页猜测proj_id,攻击者可能会更容易:今天 proj_id 是一个 int,但仍然只使用了 8 位 。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2020-11-27
      • 2013-02-21
      • 2010-10-12
      • 2012-01-21
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多