
Nana told me that buffer overflow is one of the most common software vulnerability. Is that true?
Download : http://pwnable.kr/bin/bof
Download : http://pwnable.kr/bin/bof.c
Running at : nc pwnable.kr 9000
Buffer OverFlow ๊ด๋ จ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
์ฐ์ BOF์ ๋ํด ์์๋ณด์.
Buffer OverFlow(BOF)๋?
ํ๋ก๊ทธ๋จ์์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์๋ฅผ ๋์ด์ ์์น์ ์๋ฃ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ๋ ๋ฐ์ํ๋ค.
์ค์๋ ๋๋ ์ ์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ๋๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ์ฃผ์๋ก ์ ์ํด์ bof.c ํ์ผ์ ์ค์น ํ ํ์ธํด๋ณด์.
์ฝ๋๋ฅผ ์ฝ์ด๋ณด์.
0xdeadbeef๋ฅผ ์ธ์๋ก func ํจ์๋ฅผ ์คํํ๋ค.
๋ค์์ผ๋ก๋ func ํจ์๋ฅผ ๋ณด์.
gets ํจ์๋ฅผ ํตํด overflowme ๋ณ์์ ์ ๋ ฅ์ ๋ฐ๋๋ค.
๋ง์ฝ ์ ๋ ฅ๋ฐ์ ์ธ์(key)๊ฐ 0xcafebabe๋ฉด ์ ธ์ ์คํํ๋ค.
๋ฐ๋ผ์ flag๋ฅผ ์ป์ผ๋ ค๋ฉด gets ํจ์ ์ทจ์ฝ์ ์ ํตํด BOF๋ฅผ ์ผ์ผ์ผ key๊ฐ์ ๋ฎ์ด์ค์ผ ํ๋ค.
gdb๋ก bof ํ์ผ์ ๋ถ์ํด๋ณด์.
* intel ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋ ์ด์ ๋ธ๋ฆฌ์ด์ด๋ค.
call ๋ช ๋ น์ด๋ก func ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์ ์ ์๋ค.
func ํจ์์์๋ call ๋ช ๋ น์ด๊ฐ 4๋ฒ ์ฐ์ธ๋ค.
์์๋๋ก printf(), gets(), system(), printf() ํจ์์ผ ๊ฒ์ด๋ค.
gets ํจ์ ๋ถ๋ถ์ ๋ณด๋ฉด overflowme์ ์์น๋ ebp-0x2c์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
if๋ฌธ ๋ถ๋ถ์ ๋ณด๋ฉด key์ ์์น๋ ebp+0x8์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ ์ฃผ์ ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด๋ณด์.
๋ ์ฃผ์ ๊ฐ ๊ฑฐ๋ฆฌ๋ 52byte์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก overflowme์ 52byte๋ฅผ ์ฑ์ฐ๊ณ cafebabe๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด if๋ฌธ ์กฐ๊ฑด์ ์ถฉ์กฑํด ์ ธ์ ํ๋ํ ๊ฒ์ด๋ค.
ํ์ด์ฌ ์ต์คํ๋ก์ ํ๋ ์์ํฌ์ธ pwntools์ ์ฌ์ฉํด๋ณด์.
๊ทธ๋ฆฌ๊ณ ์์ฑํ bof.py๋ฅผ ์คํํด๋ณด์.
์ ธ์ ํ๋ํ์๋ค.
ls ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ๋๋ ํฐ๋ฆฌ ๋ด์ฉ ๋ชฉ๋ก์ ํ์ธํด๋ณด์.
์ฌ๋ฌ ํ์ผ ์ค flag ํ์ผ์ด ๋ณด์ธ๋ค.
flag ํ์ผ์ ํ์ธํด๋ณด์.
flag๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
FLAG : daddy, I just pwned a buFFer :)
'๐๐ฌ๐ฃ๐๐๐ก๐ ๐ป > Pwnable.kr WriteUp' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Pwnable.kr ] collision (0) | 2022.07.31 |
---|---|
[ Pwnable.kr ] fd (0) | 2022.07.30 |