protostar
date
Feb 17, 2017
slug
protostar
status
Published
tags
Pwnable
summary
type
Post
stack0
stack1
stack2
stack3
stack4
stack5
stack5๋ฒ์ ์์ฝ๋ ์คํํ ๋ ์ฃผ์๊ฐ ๋ฐ๋์ด์ core ๋คํ๋ก ๋ถ์์ ํด์ ๋ฐ๋ /bin/sh ์ฃผ์๋ฅผ ๋ฃ์์ง๋ง ์๋๋ค.
๊ทธ๋์ ls -al์ด ๋ฐํ ํ๊ฒฝ๋ณ์์ ๋ฃ๊ณ RTL ํ๋๋ ์ ์์ ์ผ๋ก ๋ฌ๋ค.
stack6
stack7
0xb0xxxxxxxx ์ฃผ์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค. ret์ ret๋ฅผ ๋ฃ์ด์ ret+4์ ํด๋นํ๋ ์ฃผ์๋ก ๋์ด๊ฐ๊ณ RTL ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํด์ง๋ค.
format0
format1
%x ํ์ ๋ ๊ฐ์ด ๋๋ ์ ธ์ ๋์ถฉ ๋๋ ค ๋ง์ถ๋ ์์ผ๋ก ํ๋๋ฐ .. ์ฑ๊ณตํ๋ค.
format2
format1๋ฒ์ฒ๋ผ ๊ฐ์ด ํฉ์ด์ ธ ์์ง ์๊ณ 4๋ฒ์งธ ์ฃผ์์ ๋ฐ๋ก ๋ฐํ์์๋ค. ๊ทธ๋์ target is number๊ฐ ๋ฐ๋๋ ๊ฒ์ ๋ณด๊ณ 64๋ฅผ ๋ง์ถฐ์ ํ์๋ค.
format3
12๋ฒ์งธ์ 0x41์ด ๋ฐํ์์๋ค.
๋ฃ์ ๊ฐ์ ์ฃผ์๋
080496f4 g O .bss 00000004 target
target์ ๋ค์ด๊ฐ ์ฃผ์๋ 0x01025544์ด๋ค.
ํฌ๋งท ์คํธ๋ง์ 2๋ฐ์ดํธ์ฉ ๋์ด์ ๋ฃ์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ์ 2๊ฐ ๋ฃ์๊ณ ,
์์๋ 5544 - 8byteํ 10์ง์ ๊ฐ (8๋ฐ์ดํธ๋ฅผ ๋นผ๋ ์ด์ ๋ ์์์ ์ฃผ์ ๊ฐ์ ๋ฃ์ ๋ 8๋ฐ์ดํธ๋ฅผ ์ฌ์ฉ ํ๊ธฐ ๋๋ฌธ์ด๋ค.)
๋ค์๋ 0102์ธ๋ฐ ์ฌ๊ธฐ์ 5544๋ฅผ ๋นผ๋ฉด ์์๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ 10102 - 5544๋ฅผ ํ๋ฉด 4๋ฐ์ดํธ๊ฐ ๋ฐํ๊ณ ๋๋จธ์ง 1๋ฐ์ดํธ๋ ๋ฐ๋ฆฌ๊ฒ ๋๋ฏ๋ก ์๊ด์ด ์๋ค.
๋ค์๊ฐ 0102์ด๊ณ ์์ด 5544์ธ ์ด์ ๋ ๋ฆฌํ ์๋์ธ ๋๋ฌธ์ด๋ค.
format4
๋ฌธ์ ์ ํํธ์์ objdump -TR์ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค.
4๋ฒ์งธ์ 0x41์ด ๋ฐํ๋ค. ๊ทธ ์ดํ๋ก ์ ๋ชจ๋ฅด๊ฒ ๋ค.. ๋ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
heap0
heap์ malloc์ผ๋ก ์ํ๋ ํฌ๊ธฐ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ฒ ๋์ ๊ทธ ๊ณต๊ฐ์ ๋ค ์ฑ์ฐ๊ณ ๋ ๋ฃ์ผ๋ฉด ์ค๋ฒํ๋ก์ฐ๊ฐ ์๊ธด๋ค.
๊ทธ๋์ A๋ก buffer + dummy + sfp ์ธ ๊ฒ ๊ฐ์๋ฐ ์๋ฌดํผ 72๋ฐ์ดํธ ๋ค์์ 4๋ฐ์ดํธ๊ฐ nowinner๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์๋ค.
๊ทธ๋์ winner์ ์ฃผ์๊ฐ์ ์์๋ด๊ณ level passed๋ฅผ ๋์ ๋ค.
heap1
์์ค์ฝ๋๋ฅผ ๋ณด๋ฉด malloc์ด 8๋ฐ์ดํธ ์์ฑ์ ํ๋๋ฐ ์
๋ ฅํ ๊ฐ๋ค์ strcpy๋ก ๋ณต์ฌ๋ฅผ ํ๋ค. ์ฒซ๋ฒ์งธ i1->name์์ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์์ผ์ ๋๋ฒ์งธ์ ๊ฐ์ ๋ฃ์ ์ฃผ์๋ฅผ ๋ณ์กฐ ์์ผ์ฃผ๋ฉด ํ ์ ์๋ค.
gdb๋ก ๊น๋ณด๋ puts๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณด๊ณ puts์ got์ winner ํจ์์ ์ฃผ์๋ฅผ ๋ฃ์๋๋ ํ๋ ธ๋ค.
heap3
free๋ฅผ ์ฐ์์ ์ผ๋ก ํด์
๋ง์ง๋ง์ dynamic failed?๋ฅผ ์ถ๋ ฅํ ๋ puts๋ฅผ ์ฌ์ฉํ๋๋ฐ put GOT์ winner ํจ์๋ฅผ ๋ฃ์ผ๋ฉด ํ๋ฆด ๊ฒ ์ด๋ค.
32๋ฐ์ดํธ ํฌ๊ธฐ๋ฅผ malloc ํ๊ณ 8๋ฐ์ดํธ๋ ์ด์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์๋ค. ๊ทธ๋์ ์ด 40๋ฐ์ดํธ๋ค.
"\x90"์ผ๋ก ๋ฒํผ๋ฅผ ์ฑ์ฐ๊ณ puts got์ winner ํจ์๋ฅผ ๋ฎ์ด ์ฐ๋ ค๊ณ ํ๋๋ฐ ์ธ๊ทธ๋จผํธ ํดํธ๊ฐ ๋ฌ๋ค. ๊ถํ ๋ฌธ์ ์๋ค.
๊ทธ๋์ ์คํ ํ ๊ณต๊ฐ์ธ ์คํ์ ๋ฃ๊ธฐ๋ก ํ๋ค. ๊ทธ๋์ winner shellcode๋ฅผ ๋ฃ๊ณ \xfc\xff\xff\xff๋ฅผ ๋ฃ์์ผ๋ก์จ prev_size๋ฅผ ์กฐ์ํด์ b address+4๋ก ์ธ์ ํ๋ค.
prev_size๋ ์ด์ chunk์ ํฌ๊ธฐ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋๋ฐ ์ด์ chunk์ ์์น๋ฅผ ์กฐ์ํ๋ ๊ฒ์ด๋ค.
fd+12=bk, bk+8=fd๋ฅผ ์ด์ฉํด์ ์ํ๋ ์ฃผ์์ ์ํ๋ ๊ฐ์ ๋ฃ์ด์ ์คํ ํ ์ ์๋ค.
๊ทธ๋์ aaaa๋ก ๋๋ฏธ ๊ฐ์ ๋ฃ๊ณ ์ฐ๋ฆฌ๊ฐ ์คํํด์ผ ํ puts got์ -12์ฃผ์์ธ 0x0804b128-12 = 0x0804b11c๋ฅผ fd์ ๋ฃ๊ณ bk์ 0x0804c008(winner ํจ์)์ ๋ฃ์ด์ ์กฐ์์ ํ๋ค.
๋ง์ง๋ง A๋ ๊ฐ์ ๋ฌด์กฐ๊ฑด 3๊ฐ๋ฅผ ๋ฃ์ด์ผ ํ๋๊น dummy ๊ฐ์ผ๋ก ์๋ฌด๊ฑฐ๋ ๋ฃ์๋ค.