๊น๋ง๋์ด๋ค.ใท
Dreamhack์์ ํผ ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ์ ํ์ด ๊ณผ์ ์ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค.
ํผ ๋ฌธ์ ๋ ์๊ฒ์์ rev-basic-0์ด๋ค.
๋ฌธ์ ์ ๋ณด
์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ correct ๋๋ wrong์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก correct๊ฐ ์ถ๋ ฅ ๋๋ ์ ๋ ฅ๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ํ์ผ์ ๋ค์ด ๋ฐ์ ์์ถ ํ์ผ์ ํด์ ํ ๋ค x64dbg์ ๋ค์ด๊ฐ ํ์ผ์ ์ด์๋ค.
x64dbg๋ https://x64dbg.com/์์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์๋ค.
๋ฌธ์ ํ์ด ๊ณผ์
x64dbg์์ ์์ชฝ ์ข์ธก 'ํ์ผ(F)'์ ๋๋ฅด๊ณ 'ํ์ผ ์ด๊ธฐ'๋ฅผ ํด์ ์์ถ์ ํด์ ํ ํ์ผ์ ์คํํ๋ค.
ํ์ผ์ ์ฒ์ ์ด๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
๋งค์ฐ ์งง์ ์ฝ๋๋ ์ด์ ๋ธ๋ฆฌ์์๋ ์๋ง์ ์ค์ ์ธ์ด๋ก ๋ฒ์ญ ๋๊ธฐ ๋๋ฌธ์ ๋งจ ์์ ์ค๋ถํฐ ํ๋ํ๋ ์ดํด๋ณผ ์๋ ์๋ค.
ํจ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ํ์ํ ๋ถ๋ถ์ ์ฐพ๊ธฐ ์ํด ์ฐ์ ์ถ๋ ฅ๊ฐ, ์ฆ printf๋ฅผ ํ์ ๋ ๋จ๋ ๋ฌธ์์ด์ ์ฐพ์์ค๋ค.
์ถ๋ ฅ ๋๋ ๋ฌธ์์ด์ธ "correct" ๋๋ wrong"์ ์ฐพ๊ธฐ ์ํด ๋ฌธ์์ด ์ฐธ์กฐ์ ๋ค์ด๊ฐ ๊ฒ์ํด์ค๋ค.
๋ฌธ์์ด์ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์ ํ๋ฉด์ ๋จ๋ 4๊ฐ์ ์ฐฝ ์ค ๊ฐ์ฅ ํฐ ์ฐฝ์ ๋ง์ฐ์ค๋ฅผ ๋๊ณ ์ฐ์ธก ํด๋ฆญ,
๋ค์์ ์ฐพ๊ธฐ, ๋ชจ๋ ๋ชจ๋, ๋ฌธ์์ด ์ฐธ์กฐ๋ฅผ ํด๋ฆญํ๋ฉด ๋๋ค.
๋ฌธ์์ด ์ฐธ์กฐ์ ๋ค์ด๊ฐ ๋ค ๋งจ ์๋์ ๊ฒ์์ฐฝ์ ์ฐพ๋ ๋ฌธ์์ด์ ๊ฒ์ํ๋ค.
"input", "wrong", "correct" ์ค ์๋ฌด๊ฑฐ๋ ๊ฒ์ํด๋ ์๊ด์๋ค. ๋๋ "wrong"์ด๋ผ๋ ๋ฌธ์์ด๋ก ๊ฒ์ํ๋ค.
3์ค์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ฐ ๊ทธ์ค ์ถ๋ ฅ ๋ ๋ฌธ์์ด์ ๋ํ๋ด๋ ๊ฐ์ฅ ์ฒซ ์ค์ ๋๋ธ ํด๋ฆญํ๋ค.
๋๋ธ ํด๋ฆญํ๋ฉด ์ด๋ ๊ฒ "wrong"์ ์ถ๋ ฅ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ก ์ด๋ํ๋ค.
์ ๋ ฅ๊ณผ ์ถ๋ ฅ ๋ถ๋ถ์ด ๋์ ์์ผ๋ฏ๋ก main ํจ์์ ๊ด๋ จ๋ ๋ถ๋ถ์์ ์ ์ ์๋ค.
์ด์ ์กฐ๊ธ ์์ธํ ์ดํด๋ณด์์ผ ํ๋ค.
'call'์ด๋ผ๋ ์ต์ฝ๋๋ ํจ์๋ฅผ ๋ถ๋ฌ์ค๋ ๋ช ๋ น์ด์ด๋ค.
main ํจ์ ์์์ ์ต์ฝ๋ call์ด ์ด๋๋ ์ฌ๋ฌ ์ฝ๋๋ค์ด ๋ณด์ธ๋ค.
๊ฐ์ฅ ์์ ๋ณด์ด๋ call์ "input" ๋ฐ๋ก ๋ค์ ์ค์ด๋ฏ๋ก ์ ๋ ฅ๊ณผ ๊ด๋ จ๋ ํจ์๋ฅผ ๋ถ๋ฌ์จ ๊ฒ์ด๊ณ ,
๊ทธ ๋ค์ call๋ "%256s" ๋ค์ด๋ฏ๋ก ๋ฌธ์์ด ๊ด๋ จ ํจ์์ด๋ค.
๋ call ๋ชจ๋ ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ํจ์๋ฅผ ๋ถ๋ฌ์ค์ง ์๋๋ค. ํ๋ฝ.
๋ค์ call ๋ฐ์ ์ค์๋ test eax, eax๊ฐ ์๋ค.
test๋ AND ์ฐ์ฐ์ ์ํํ๋ฏ๋ก test ๋ค์ ๋ ์คํผ๋๋๊ฐ ๊ฐ์ผ๋ฉด 1, ๋ค๋ฅด๋ฉด 0 ๊ฐ์ ์ ์ฅํ๋ค.
eax์ eax, ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์คํผ๋๋๋ผ๋ฆฌ ์๋ก ๋น๊ตํ๋ฏ๋ก AND ์ฐ์ฐ๊ฒฐ๊ณผ๋ 1์ด๋ค.
์ด๋ ZF๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ 0์ด๋ฉด 1์, 1์ด๋ฉด 0์ ์ ์ฅํ๋ฏ๋ก, ZF๋ 0์ด๋ค.
test ๋ฐ์ ์ค์ธ je๋ ZF๊ฐ 0์ผ๋ ์ ํํ๋ ์ต์ฝ๋์ด๋ค.
์ ํ๋ฅผ ํ๊ฒ ๋๋ฉด "wrong"์ ์ถ๋ ฅํ๋ ์ฝ๋๋ก ์ด๋ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ 'call cha110.7FF75D181000'์ด๋ผ๋ ํจ์๋ฅผ ์คํํ์ ๋ test eax, eax๋ฅผ ๋ง๋์ง ์๋๋ก ํด์ผ ํ๋ค.
์ฆ, call cha110.7FF75D181000์ด "correct" ๋๋ "wrong" ์ค ์ด๋ค ๋ฌธ์์ด์ ์ถ๋ ฅํ ์ง ์ ํํ๋ ๊ฒฐ์ ์ ์ฝ๋์ด๋ค.
์ด ํจ์๋ฅผ ๋๋ธ ํด๋ฆญ ํด์ ์ด๋ค ํจ์์ธ์ง ์ดํด๋ณด๋ฉด ์์ ๋ฌธ์์ด์ด ๋ฐ๊ฒฌ๋๋ค.
cmd ์ฐฝ์ ์ด์ด "input: "์ ๋ต์ ์ ๋ ฅํด์ฃผ๋ฉด
๋๋ ๋งจ ์์ 'C'๋ฅผ ์ฒ์์ ์๋ฌธ์๋ก ์ ๋ ฅํด์ ํ ๋ฒ ํ๋ ธ์ง๋ง, (¬_¬")
์ ๋๋ก 'compar3_the_str1ng'์ ์ ๋ ฅํด์ฃผ๋ฉด 'Correct'๊ฐ ๋ฌ๋ค. ์ ๋ต์ด๋ค.
'๐ง ๋ฆฌ๋ฒ์ฑ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Dreamhack ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: rev-basic-2 (0) | 2023.10.31 |
---|---|
๊ธฐํ ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: easy-crackme1 (1) | 2023.10.09 |
Dreamhack ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: rev-basic-1 (1) | 2023.10.09 |
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง: ์ด์ ๋ธ๋ฆฌ (ํจ์) (0) | 2023.08.03 |
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง: ์ด์ ๋ธ๋ฆฌ (๋ ์ง์คํฐ, ์ต์ฝ๋) (0) | 2023.08.02 |