

๋ฌธ์ ์ ๋์จ ์ฃผ์๋ฅผ ๊ฒ์ํด ํ์ผ์ ๋ค์ด๋ฐ๋๋ค.
์๋๋ bof.c ํ์ผ์ด๋ค.

- mainํจ์๋ฅผ ๋ณด๋ฉด, func() ํจ์์ 0xdeadbeef๊ฐ ์ ๋ ฅ๋๋ค.
- ์ด ๊ฐ์ด 0xcafebabe์ ๊ฐ์ผ๋ฉด flag๊ฐ ์ถ๋ ฅ๋๋ค.
- gets ํจ์๋ฅผ ํตํด ์ ๋ ฅ์ ๋ฐ๋๋ฐ, ๊ธธ์ด ์ ํ์ด ์์ด์ overflowme[32]๋ฅผ ๋๊ฒจ key ๊ฐ์ ๋ฎ์ด์ธ ์ ์๋ค. ์ฆ, ์ค๋ฒํ๋ก ์ทจ์ฝ์ ์ ๊ฐ์ง ํจ์์ด๋ค.
- key[4] ์ overflowme[32] ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ์.

gdb๋ก bof ๋ฅผ ๋ถ์ํ์.
func ํจ์


'disas(=disassembly) ํจ์ ์ด๋ฆ'์ผ๋ก func ํจ์๋ฅผ ๋๋ฒ๊น ํ๋ค.

key ๋ถ๋ถ์ด๋ค.
main ํจ์

์ด๋ฒ์๋ ๋ฉ์ธ ํจ์๋ฅผ ๋๋ฒ๊น ํ๋ค.

์ฃผ์ 1264์์ func ํจ์๊ฐ ํธ์ถ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์, func ํจ์์์ printf ํจ์ ํธ์ถ ํ gets ํจ์๊ฐ ํธ์ถ๋ ๊ฒ์ด๋ค. (์๋์ func ํจ์์์ ํ์ธํ ์ ์๋ค.)

์๊น์ func ํจ์์ด๋ค. ๋ฐ๋ผ์ gets ํจ์์ call ์์น๋ 1207์ด๋ค.
(๋ค๋ฅธ ์ฌ๋๋ค์ dbg ์ถ๋ ฅํ๋ฉด๊ณผ ๋ค๋ฅธ๋ฐ -02c๊ฐ ์๋๋ผ ์ -0x30์ผ๊น์?)
์ด์ gets ํจ์๋ฅผ ํตํด ์ ๋ ฅ๋ฐ๋ overflowme ๊ณต๊ฐ์ ์์น๋ฅผ ์ฐพ์์ผ ํ๋ค.
call ๋ค์์ ์์นํ -0x30์ overflowme๊ฐ ์์นํ ๊ฒ์ด๋ค.
gets ํจ์๋ฅผ ํตํด ์ค๋ฒํ๋กํ์ฌ ์ ๋ ฅ๋ key(deadbeef)๋ฅผ cakebabe๋ก ๋ฎ์ด์ผ ํ๋ค.
overflowme + ์ฐ๋ ๊ธฐ ๊ฐ + cakebabe
์ฌ๊ธฐ์ ์ฐ๋ ๊ธฐ ๊ฐ๊ณผ cakebabe๋ฅผ ๋ํ ๊ฐ์ -0x30 ~ 0x34์ด๋ค.
์๋์ ๊ฐ์ด ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค. (A๋ ์๋ฌด ๋ฌธ์๋ก ์ฑ์ด ๊ฒ์ด๋ค.)
(python -c "print('A'*52+'\xbe\xba\xfe\xca')";cat) | nc pwnable.kr 9000
์ฐธ๊ณ
[ Pwnable.kr ] - bof(buffer overflow) (velog.io)
3. ๋ฒํผ ์ค๋ฒํ๋ก (bof) - Pwnable.kr ํด์ค (tistory.com)
'๐ ๋ณด์ยท์ทจ์ฝ์ > ๐ธ์์คํ ยท์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [dreamhack] Background: Computer Architecture (0) | 2023.07.10 |
|---|---|
| [dreamhack] System Hackig Introduction (0) | 2023.07.08 |
| [ubuntu] gdb ์ค์ต (0) | 2022.08.21 |
| Set-UID ์ ๋ฆฌ (0) | 2022.08.21 |
| [dreamhack] pwnable fd (0) | 2022.08.14 |