๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/FTZ

FTZ - level 9

by Janger 2023. 3. 15.
728x90
๋ฐ˜์‘ํ˜•
hint

 

๋‹ค์Œ์€ /usr/bin/bof์˜ ์†Œ์Šค์ด๋‹ค.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

main(){

  char buf2[10];
  char buf[10];

  printf("It can be overflow : ");
  fgets(buf,40,stdin);

  if ( strncmp(buf2, "go", 2) == 0 )
   {
        printf("Good Skill!\n");
        setreuid( 3010, 3010 );
        system("/bin/bash");
   }

}

์ด๋ฅผ ์ด์šฉํ•˜์—ฌ level10์˜ ๊ถŒํ•œ์„ ์–ป์–ด๋ผ.

 

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ๊ด€ํ•œ ๋ฌธ์ œ์ด๋‹ค. 

fgets ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ตœ๋Œ€ 40๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค. 

๋ฌธ์ œ๋Š” buf2์™€ buf ๋ณ€์ˆ˜์˜ ์‚ฌ์ด์ฆˆ๋Š” 10 ๋ฐ–์— ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ๊ฐ€ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. 

 

 

ํ™•์ธ ์‚ผ์•„ ์ž…๋ ฅ์œผ๋กœ "0123456789gogogo"๋ฅผ ์ž…๋ ฅํ•ด ๋ณด์•˜๋‹ค. 

๊ทผ๋ฐ ํ•ด๊ฒฐ์ด ์•ˆ๋๋‹ค. 

๋‚ด ์˜ˆ์ƒ์œผ๋กœ๋Š” buf = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} buf2 = {g, o, g, o, g, o, \n} ์ด๋ ‡๊ฒŒ ์ฑ„์›Œ์ง์œผ๋กœ ํ•ด๊ฒฐ๋  ์ค„ ์•Œ์•˜๋˜ ๊ฒƒ์ด๋‹ค. 

์•ˆ๋œ ์ด์œ ๊ฐ€ ์•„๋งˆ ๋‘ ๋ณ€์ˆ˜ ์‚ฌ์ด์— ๋” ํฐ ๊ฐ„๊ฒฉ์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ด ๋ณธ๋‹ค. 

 

 

๋‘ ๋ฒˆ์งธ ์‹œ๋„๋กœ ๋’ค์— go๋ฅผ ๋” ๋งŽ์ด ๋ถ™์—ฌ๋ณด์•˜๋Š”๋ฐ 

๊ทธ๋Ÿฌ๋ฉด ๋‚ด ์˜ˆ์ƒ์— ๋งž๊ฒŒ ์กฐ๊ฑด์ด ์ฐธ์ด ๋˜์–ด level10 ๊ถŒํ•œ์œผ๋กœ ์ƒ์Šนํ•˜๊ฒŒ ๋˜์–ด ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ๋œ๋‹ค.  

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์‹์œผ๋กœ ์‹ฑ๊ฒ๊ฒŒ ๋๋‚˜๊ธฐ๊ฐ€ ์•„์‰ฌ์›Œ ๊ตฌ๊ธ€๋ง์œผ๋กœ ์ข€ ๋” ๋ถ„์„์„ ํ•ด๋ณด์•˜๋‹ค. 

 

 

๋ฐฉ๋ฒ•. gdb(๋””๋ฒ„๊ฑฐ)๋กœ ํ”„๋กœ๊ทธ๋žจ ๋“ค์—ฌ๋‹ค ๋ณด๊ธฐ

 

์šฐ์„  hint์—์„œ ๋‚˜์˜จ ์†Œ์Šค ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์ปดํŒŒ์ผํ•ด์„œ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

(/usr/bin/bof๋Š” level10 ์™ธ์—๋Š” ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€๋ฅผ ๋“ค์—ฌ๋‹ค๋ณผ ์ˆ˜ ์—†์–ด์„œ ๋””๋ฒ„๊ฑฐ๋กœ ์—ด์ง€ ๋ชปํ•จ)

 

๊ทธ๋‹ค์Œ gdb๋กœ ์ƒ์„ฑํ•œ ์‹คํ–‰ ํŒŒ์ผ์„ ์—ฐ๋‹ค. 

gdb์—๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ main ํ•จ์ˆ˜๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” "disas main"์„ ์ž…๋ ฅํ•œ๋‹ค. 

 

bof ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด์šฉ๋ฌผ์ด๋‹ค. ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœํ•˜์˜€๋Š”์ง€ ์จ์ ธ ์žˆ๋‹ค. 

 

์ง‘์ค‘ํ•ด์„œ ํ™•์ธํ•ด ๋ด์•ผํ•  ๊ณณ์€ fgets ํ•จ์ˆ˜ ๋ถ€๋ถ„๊ณผ strncmp ํ•จ์ˆ˜ ๋ถ€๋ถ„์ด๋‹ค. 

 

 

๊ทธ๋ฆผํŒ์œผ๋กœ ๋Œ€์ถฉ ๋„์ ์ธ ๊ฒƒ..

 

์œ„ ์ด๋ฏธ์ง€์™€ ์•„๋ž˜์˜ C์–ธ์–ด ์†Œ์Šค ์ฝ”๋“œ๋ž‘ ๊ฐ™์ด ๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์•„์ฃผ ์‰ฝ๋‹ค. 

fgets(buf,40,stdin)
strncmp(buf2, "go", 2)

ํ•จ์ˆ˜์— ์ž…๋ ฅ ๋ฐ›๋Š” ์ธ์ž๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  fgets์— 0x8049698(stdin ์ฃผ์†Œ)๋ฅผ ์Šคํƒ์—๋‹ค ๋„ฃ๊ณ , ๊ทธ๋‹ค์Œ ์‚ฌ์ด์ฆˆ 0x28(40)์„ ์Šคํƒ์— ๋„ฃ๊ณ  buf ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋กœ ๋ณด์ด๋Š” 0xffffffd8๋„ ์Šคํƒ์— ๋„ฃ๋Š” ๋‚ด์šฉ๋“ค์ด ๋ณด์ธ๋‹ค.

(C์–ธ์–ด ์ฝ”๋“œ๋ž‘ ๋‹ค๋ฅด๊ฒŒ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ธ์ž๊ฐ€ ๋’ค์— ๊ฒƒ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ „๋‹ฌํ•จ)

 

 

์•”ํŠผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํŒŒ์•…ํ–ˆ๊ณ  fgets ํ•จ์ˆ˜์— ์ž…๋ ฅํ•˜๋Š” buf ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋Š” 0xffffffd8์ด๊ณ  strncmp ํ•จ์ˆ˜์—์„œ "go"๋ฌธ์ž์™€ ๋น„๊ต๋  buf2์˜ ์ฃผ์†Œ๋Š” 0xffffffe8์ธ ๊ฒƒ์ด์—ˆ๋‹ค. ์ฆ‰ ๋‘ ์ฃผ์†Œ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์€ 16๋งŒํผ์ด๋‚˜ ์ฐจ์ด๊ฐ€ ์žˆ๋˜ ๊ฒƒ

 

์œ„์˜ ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜๊ณ  0123456789(buf1) + 012345(์˜๋ฏธ ์—†๋Š” ๊ณต๊ฐ„) + go(buf2)๋กœ ์ž…๋ ฅ์„ ํ•˜๋ฉด ํ•ด๊ฒฐ์ด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 

 

0123456789012345go๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด level10์œผ๋กœ ๊ถŒํ•œ์ด ์ƒ์Šน๋œ๋‹ค. 

728x90
๋ฐ˜์‘ํ˜•

'๐ŸดCTF > FTZ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

FTZ - level 8 with ChatGPT  (1) 2023.03.15
FTZ - Level 7  (0) 2021.11.30
FTZ - Level 6  (0) 2021.11.30
FTZ - Level 5  (0) 2021.11.18
FTZ - Level 4  (0) 2021.11.17