๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿด‍โ˜ ๏ธ CTF ๐Ÿด‍โ˜ ๏ธ/๋ฆฌ๋ฒ„์‹ฑ

[Dream Hack - Reversing] Simple Counter

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ํ•ด์„

ํŒŒ์ผ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

IDA

์ˆ˜๋„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด i๋Š” 10์—์„œ 0๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ถœ๋ ฅ๋˜๊ณ , i=3์ผ๋•Œ, src์— ์–ด๋–ค ์ŠคํŠธ๋ง์ด ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

flag_gen ํ•จ์ˆ˜๋Š” IDA View์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋™์ž‘๊ณผ์ •์„ ์š”์•ฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

loc_15A0 : i์™€ 0 ๋น„๊ต.

i > 0 : ๋ฐ˜๋ณต๋ฌธ ์ˆ˜ํ–‰
i ≤ 0 : i ์™€ 5 ๋น„๊ต.

     → i == 5 : flag_gen ์‹คํ–‰

      → i ≠ 5 : ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ.

i๋ฅผ ์ค‘๊ฐ„์—์„œ 5๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด flag_gen ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

pwndbg

$ break main 
$ run

<main+278> ์—์„œ <rbp-4>์™€ 5๊ฐ€ ๋น„๊ต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. breakpoint๋ฅผ ๊ฑธ๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

$ break *main+278
$ continue

 

$ x/1 $rbp-4
0x7fffffffe1cc: 0
$ set *0x7fffffffe1cc = 5
$ x/1 $rbp-4
0x7fffffffe1cc:5
$ continue

 

<rbp-4> ๊ฐ’์„ 5๋กœ ๋ฐ”๊พธ์–ด์ฃผ๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด flag_gen ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  flag๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!!

 

๋ฐ˜์‘ํ˜•

'๐Ÿดโ€โ˜ ๏ธ CTF ๐Ÿดโ€โ˜ ๏ธ > ๋ฆฌ๋ฒ„์‹ฑ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Dream Hack - Reversing] Simple Patch me  (0) 2024.08.23