article thumbnail image
Published 2022. 5. 4. 13:57

fd - 1 pt [writeup]

 

๋ฌธ์ œ

 

 

 

ssh fd@pwnable.kr -p2222๋ผ๊ณ  ์ž…๋ ฅํ•˜์—ฌ ์ ‘์†์— ์„ฑ๊ณตํ–ˆ๋‹ค. (pw : guest)

 

 

 

 

ls -al์„ ํ†ตํ•ด ๋ชจ๋“  ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.

flag๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ํ˜„์žฌ id(fd)์™€ flag์˜ id(fd_pwn)์ด ๋‹ฌ๋ผ์„œ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์žฅ์€ ํ™•์ธ์„ ๋ชปํ•œ๋‹ค.

 

 

 

fd.c๋ฅผ ํ™•์ธํ•ด๋ดค๋‹ค.

fd.c

 

์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž

 

char buf[32];

32ํฌ๊ธฐ์˜ ๋ฌธ์žํ˜• ๋ฐฐ์—ด buf๋ฅผ ์„ ์–ธ

 

	if(argc<2){
		printf("pass argv[1] a number\n");
		return 0;
	}

์ธ์ž๊ฐ€ 1๊ฐœ ์ดํ•˜์ด๋ฉด "pass argv[1] a number"์„ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ

 

	int fd = atoi( argv[1] ) - 0x1234;
	int len = 0;
	len = read(fd, buf, 32);

intํ˜• ๋ณ€์ˆ˜ fd์— argv[1]๊ฐ’์„ ๋ฌธ์ž์—ด์—์„œ intํ˜•์œผ๋กœ ๋ฐ”๊พผ ๊ฐ’์—์„œ 0x1234๋ฅผ ๋บ€ ๊ฐ’์„ ์ €์žฅํ•ด์คŒ

intํ˜• ๋ณ€์ˆ˜ len์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”

len์— readํ•จ์ˆ˜๋กœ fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์„ 32byte ์ฝ์–ด๋“ค์—ฌ์„œ buf์— ์ €์žฅ

 

ssiz_t read(int fd, void *buf, size_t bytes)

  • int fd : ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋Œ€์ƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ
  • void *buf : ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์—ฌ ์ €์žฅํ•  buffer(๋ฐฐ์—ด)
  • size_n bytes : ์ฝ์–ด๋“ค์ผ byte ์ˆ˜

 

	if(!strcmp("LETMEWIN\n", buf)){
		printf("good job :)\n");
		system("/bin/cat flag");
		exit(0);
	}

buf์— ์ž…๋ ฅ๋œ ๊ฐ’์ด "LETMEWIN\n"๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ฐ™๋‹ค๋ฉด good job :)๊ณผ ํ•จ๊ป˜ flag๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋จ

(strcmp๋Š” ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ด์„œ ๊ฐ™๋‹ค๋ฉด 0 ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜)

 

 

	printf("learn about Linux file IO\n");
	return 0;

"learn about Linux file IO"์„ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค

 

 

 

 

read ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด LETMEWIN์„ ์ž…๋ ฅํ•˜๋ฉด flag๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— fd์˜ ์œ„์น˜(๋ณดํ†ต 0, 1, 2๋Š” stdin, stdout, stderr)๋ฅผ ํ‘œ์ค€ ์ž…๋ ฅ(stdin)์— ํ•ด๋‹นํ•˜๋Š” 0๋ฒˆ์œผ๋กœ ์˜ฎ๊ฒจ์ค˜์•ผ ํ•œ๋‹ค.

 

int fd = atoi( argv[1] ) - 0x1234;

0x1234๋Š” 10์ง„์ˆ˜๋กœ 4660์ด๊ธฐ ๋•Œ๋ฌธ์— argv[1]์˜ ๊ฐ’์„ 4660์œผ๋กœ ์ฃผ๊ณ  LETMEWIN์„ ์ž…๋ ฅํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ”Œ๋ž˜๊ทธ ํš๋“ !

'Pwnable' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[pwnable] bof  (0) 2022.05.18
[pwnable] shellshock  (0) 2022.05.18
[pwnable] leg  (0) 2022.05.06
[pwnable] File Descriptor  (0) 2022.05.04
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!