๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ง ๋ฆฌ๋ฒ„์‹ฑ

Dreamhack ๋ฆฌ๋ฒ„์‹ฑ ๋ฌธ์ œํ’€์ด: rev-basic-2

by ๋ถˆํƒ€๋Š” ์ฐธ์ƒˆ 2023. 10. 31.

IDA์— ๋„ฃ๊ณ  F5 ๋ˆŒ๋Ÿฌ ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด ์œ„์˜ ํ™”๋ฉด์ด ๋œธ.

์ž…๋ ฅ ๊ฐ’ ๋ฐ›์•„์„œ sub_140001000 ํ•จ์ˆ˜์— ๋„ฃ์€ ๋‹ค์Œ ์ฐธ์ด๋ฉด Correct, ๊ฑฐ์ง“์ด๋ฉด Wrong ์ถœ๋ ฅ.

์ € sub_140001000 ํ•จ์ˆ˜๊ฐ€ ๋ญ”์ง€ ๊ถ๊ธˆํ•˜๋‹ˆ๊นŒ ๋“ค์–ด๊ฐ€์„œ ์•Œ์•„๋ณด์ž.

ํ•จ์ˆ˜ ๋”๋ธ” ํด๋ฆญํ•ด์„œ ๋“ค์–ด๊ฐ€๋ฉด ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋ณด์ž„.

for๋ฌธ์ด ๋ณด์ธ๋‹ค. i๊ฐ€ 0๋ถ€ํ„ฐ 0x12 ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ 18๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€ i++๋˜๋‹ˆ๊นŒ

ํ•œ ๋งˆ๋””๋กœ 18๋ฒˆ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐ˜๋ณตํ•˜๋ผ๋Š” ์ด์•ผ๊ธด๋ฐ,

๋ญ˜ ๋ฐ˜๋ณตํ•˜๋Š”์ง€ for๋ฌธ ์•ˆ์„ ๋ณด๋‹ˆ๊นŒ !=๊ฐ€ ๋ณด์ธ๋‹ค.

๋‘ ๊ฐœ๋ฅผ ๋น„๊ตํ•ด์„œ ๋‹ค๋ฅด๋ฉด return 0ํ•˜๊ณ  ๊ฐ™์œผ๋ฉด return1 ํ•˜๋ž€๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์ด 0์ด๋ฉด ๊ฑฐ์ง“, 0์ด ์•„๋‹ˆ๋ฉด ์ฐธ์ด๋‹ˆ๊นŒ

๋น„๊ตํ•˜๋Š” ์ € ๋‘˜์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

๋‘ ๋น„๊ต ๋Œ€์ƒ์„ ๋ณด๋‹ˆ ๋ฌธ์ž์™€ ์—ฐ๊ด€์ด ์žˆ์–ด ๋ณด์ธ๋‹ค. ๋ฌธ์ž๋Š” 1byte, 4bit๋‹ˆ๊นŒ

&ac[4 * i] ์ €๊ฑด i๊ฐ€ 1์”ฉ ์ปค์งˆ์ˆ˜๋ก ac[0]์ด๋ผ๋Š” ์ฃผ์†Œ์— ๊ทธ ์ฒซ ๋ฌธ์ž ๊ฐ’์ด ๋‹ด๊ธด ๋ฌธ์žฅ ์•ˆ์—์„œ

๊ทธ ๋‹ค์Œ ๋ฌธ์ž, ๊ทธ ๋‹ค์Œ ๋ฌธ์ž ์ด๋ ‡๊ฒŒ ์ฐจ๋ก€๋Œ€๋กœ ๋น„๊ตํ•ด์ฃผ๋Š” ๊ฑฐ๋‹ค. 

์ด์ œ ๋””๋ฒ„๊ฑฐ๋กœ ์—ด์–ด์ค€๋‹ค.

์ผ๋‹จ ๋ฌธ์ž์—ด ์ฐธ์กฐ๋กœ Input์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ฉ”์ธํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์ค€๋‹ค.

๋ฉ”์ธํ•จ์ˆ˜๋ฅผ ๋ณด๋‹ˆ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๊ฐ€ ๋ณด์ด๋Š”๋ฐ input ์ฒ˜๋ฆฌ ํ•จ์ˆ˜, ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์ง€๋‚˜๊ณ  ๋‚˜๋ฉด

test eax eax ๋’ค์— je chall2.7FF6B5961186 ํ•จ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ € ํ•จ์ˆ˜์— ๋“ค์–ด๊ฐ€๋ฉด ๋ฐ”๋กœ ret ๋œ๋‹ค.

๋งํ•˜๋Š”๊ฑฐ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์•ˆ ๋˜๋‹ˆ๊นŒ test eax eax ๋งŒ๋‚˜๊ธฐ ์ „์˜ ํ•จ์ˆ˜์ธ chall1.7FF6B5961000์—์„œ ์Šน๋ถ€๋ฅผ ๋ด์•ผ ํ•œ๋‹ค.

๋”๋ธ” ํด๋ฆญํ•ด์„œ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

๋“ค์–ด๊ฐ€๋ฉด ์ฒ˜์Œ์— ํ•จ์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณดํ•˜๋Š” ๋ถ€๋ถ„์„ ์ง€๋‚˜๋ฉด

cmp rax, 12๊ฐ€ ๋ณด์ด๊ณ   ๊ทธ ๋‹ค์Œ ์ค„์— jae ์–ด์ฉŒ๊ตฌ๊ฐ€ ๋ณด์ธ๋‹ค.

jae๋Š” ๊ฐ™๊ฑฐ๋‚˜ ํฐ ๊ฒฝ์šฐ์— ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋ช…๋ น์–ด์ธ๋ฐ

jae ์˜†์˜ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ret๋œ๋‹ค. ๋งํ•œ๋‹ค.

์ฆ‰ ์‹คํ–‰๋˜๋ฉด ์•ˆ ๋˜๋‹ˆ๊นŒ rax๊ฐ€ 12๋ณด๋‹ค ์ž‘์•„์•ผ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ 16์ง„์ˆ˜๋กœ ์šด์˜์ฒด์ œ๋‹ˆ๊นŒ 12๊ฐ€ ์•„๋‹ˆ๋ผ 18.

์ญ‰ ๋‚ด๋ ค๊ฐ€๋‹ค ๋‘ ๋ฒˆ์งธ๋กœ ๋‚˜์˜จcmp ๋ถ€๋ถ„์„ ๋จผ์ € ์‚ดํŽด๋ณด์ž. edx์™€ [rcx+rax*4]์— ๋“  ๋ฌธ์ž๋ฅผ ๋น„๊ตํ•˜๊ณ  ์žˆ๋‹ค. 

rax๊ฐ€ i ๊ฐ’์ด๋ผ ํ•  ์ˆ˜์žˆ๊ณ  rcx๊ฐ€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ์ธ ๊ฒƒ์ด๋‹ค.

์œ„๋กœ ์˜ฌ๋ผ๊ฐ€์„œ rcx์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋‹ˆ 7FF6B593000์ด๋ผ๋Š” ์–ด๋–ค ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด๊ฐ’๋‹ค. 

๋ญ๊ฐ€ ๋“ค์–ด์žˆ๋‚˜ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด ๋คํ”„์—์„œ ๋”ฐ๋ผ๊ฐ€๊ธฐ๋ฅผ ํ•ด๋ณด๋ฉด

Cmpr4re_the_arr4y๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

cmd ์ฐฝ์—์„œ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ด์ค€๋‹ค.

Correct~๏ผˆ๏ฟฃ๏ธถ๏ฟฃ๏ผ‰โ†—ใ€€