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์ผ๋ก ๊ถํ์ด ์์น๋๋ค.
'๐ด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 |