FTZ Level 10


hintは以下の通りです.

共有メモリとは、複数のプロセスで同時にアクセスできるメモリです.
C言語にはshmgetがこの共有メモリを生成する関数として用いられる.
key tは共有メモリを区別する識別番号なのでshmgetを使用できます.
まず、ipcsコマンドにより、システムが使用する共有メモリセグメントを決定します.

0 x 00001 d 6 aという名前のキーがあり、10進数7530に変換されます.プロンプトで指定されたkey tと同じであるため、アクセスする必要がある共有メモリは0 x 00001 d 6 aである.
共有メモリにアクセスするには、次のソースコードを作成して実行します.
#include <stdio.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/types.h>

int main() {
    int shmid; // 공유 메모리의 id를 저장할 변수 선언
    char* shmdata; // char형 포인터 선언
    
    shmid = shmget(7530, 1028, 0666); // key가 7530, 용량이 1028바이트, 권한이 0666인 공유 메모리를 생성
    shmdata = shmat(shmid, NULL, 0); // 공유 메모리 세그먼트에 액세스
    printf("%s\n", shmdata); // 내용 출력
    shmdt(shmdata); // 공유 메모리 분리
    
    return 0;
}
ちなみに、このソースでchar型ポインタを宣言する理由は、shmat関数がshmidのアドレスを返し、ポインタにアドレスを格納しprintf関数で%sを使用してアドレスの文字列を出力するためである.

レベル11のパスワードが出てきました.