FTZ Level 10

3783 ๋‹จ์–ด FTZsecurityFTZ

hint๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ž€, ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์‹œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.
C์–ธ์–ด์—๋Š” ์ด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋กœ shmget์ด ์žˆ๋‹ค.
key_t๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ์‹๋ณ„ ๋ฒˆํ˜ธ์ด๊ธฐ ๋•Œ๋ฌธ์— shmget์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ipcs ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ™•์ธํ•œ๋‹ค.

0x00001d6a๋ผ๋Š” key๊ฐ€ ์žˆ๊ณ , ์ด๋Š” 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด 7530์ด๋‹ค. ํžŒํŠธ์—์„œ ์ฃผ์–ด์ง„ key_t์™€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผํ•ด์•ผ ํ•  ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” 0x00001d6a์ด๋‹ค.

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

#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๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ์ฃผ์†Œ์— ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

level11์˜ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‚˜์™”๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ