์ „์ฒด ๊ธ€ 110

[pwnable] bof

bof - 5 pt [writeup] ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „์— wget์„ ์‚ฌ์šฉํ•ด์„œ bofํŒŒ์ผ๊ณผ bof.cํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์คฌ๋‹ค. bof.c ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ดค๋‹ค. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } overflowme๋ผ๋Š” charํ˜• ๋ฐฐ์—ด์ด ์„ ์–ธ๋˜์–ด์žˆ๊ณ , gets๋ฅผ ์‚ฌ์šฉํ•ด์„œ overfl..

Pwnable 2022.05.18

[pwnable] shellshock

shellshock - 1 pt [writeup] shellshock์— ๋Œ€ํ•œ ๊ฐœ๋…๊ณผ ์›๋ฆฌ๋ฅผ ๋จผ์ € ์•Œ์•„๋ณด์ž. shellshock (CVE-2014-6271) ์ถœ์ฒ˜ https://baobob1024.tistory.com/42 : GNU bash shell์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ์›๊ฒฉ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์  ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ ์‹œ์Šคํ…œ์„ ์žฅ์•…ํ•  ์ˆ˜ ์žˆ์–ด shellshock์ทจ์•ฝ์ ์€ CVSS ๋“ฑ๊ธ‰ 10์ ์„ ๋ฐ›์•˜๋‹ค. โ–ท ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ณ€์ˆ˜(ํ™˜๊ฒฝ๋ณ€์ˆ˜)๋ฅผ ์ •์˜ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์  ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• $ x() { echo abcd; } ์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด export์˜ -f(function) ์˜ต์…˜์œผ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ํ•จ์ˆ˜(x)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ์•ˆ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. sh..

Pwnable 2022.05.18

[Heap Exploit] UAF (Use-After-Free)

Heap ๊ตฌ์กฐ ์ถœ์ฒ˜ : https://dokhakdubini.tistory.com/35 : ์ปดํ“จํ„ฐ ์•ˆ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ โ–ท malloc ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•ด์ฃผ๊ณ , free ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด์ œํ•ด์คŒ 1. First-Fit ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ „๋žต ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฆฌ๋ˆ…์Šค ์šด์˜์ฒด์ œ๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. First-Fit ๋ง๊ณ ๋„ Best-Fit, Worst-Fit๋„ ์žˆ์Œ ์˜ˆ) char *a = malloc(20); // 0xe4b010 char *b = malloc(20); // 0xe4b030 char *c = malloc(20); // 0xe4b050 char *d = malloc(20); // 0xe4b070 free(a); free(b); free(c); f..

DreamHack 2022.05.18

[C] ๋ฐฑ์ค€_ 7568๋ฒˆ

7568๋ฒˆ ๋ฉ์น˜ (silver 5) ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๋ฅผ ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ, ์ด ๋‘ ๊ฐœ์˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๊ทธ ๋“ฑ์ˆ˜๋ฅผ ๋งค๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ x kg์ด๊ณ  ํ‚ค๊ฐ€ y cm๋ผ๋ฉด ์ด ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๋Š” (x, y)๋กœ ํ‘œ์‹œ๋œ๋‹ค. ๋‘ ์‚ฌ๋žŒ A ์™€ B์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (x, y), (p, q)๋ผ๊ณ  ํ•  ๋•Œ x > p ๊ทธ๋ฆฌ๊ณ  y > q ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” A์˜ ๋ฉ์น˜๊ฐ€ B์˜ ๋ฉ์น˜๋ณด๋‹ค "๋” ํฌ๋‹ค"๊ณ  ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค A, B ๋‘ ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (56, 177), (45, 165) ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด A์˜ ๋ฉ์น˜๊ฐ€ B๋ณด๋‹ค ํฐ ์…ˆ์ด ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ์น˜๋ผ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์‚ฌ๋žŒ C์™€ D์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (45, 181), (55, 173)์ด๋ผ๋ฉด ๋ชธ๋ฌด๊ฒŒ๋Š” D๊ฐ€ C๋ณด๋‹ค ๋” ๋ฌด๊ฒ๊ณ , ํ‚ค๋Š” C..

๋ฐฑ์ค€/C 2022.05.16

[Python] ๋ฐฑ์ค€_4949๋ฒˆ

4949๋ฒˆ ๊ท ํ˜•์žกํžŒ ์„ธ์ƒ (silver 4) ์„ธ๊ณ„๋Š” ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์–‘๊ณผ ์Œ, ๋น›๊ณผ ์–ด๋‘  ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ์ •๋ฏผ์ด์˜ ์ž„๋ฌด๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ด„ํ˜ธ๋“ค์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž์ถฐ์ ธ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌธ์ž์—ด์— ํฌํ•จ๋˜๋Š” ๊ด„ํ˜ธ๋Š” ์†Œ๊ด„ํ˜ธ("()") ์™€ ๋Œ€๊ด„ํ˜ธ("[]")๋กœ 2์ข…๋ฅ˜์ด๊ณ , ๋ฌธ์ž์—ด์ด ๊ท ํ˜•์„ ์ด๋ฃจ๋Š” ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ชจ๋“  ์™ผ์ชฝ ์†Œ๊ด„ํ˜ธ("(")๋Š” ์˜ค๋ฅธ์ชฝ ์†Œ๊ด„ํ˜ธ(")")์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ์™ผ์ชฝ ๋Œ€๊ด„ํ˜ธ("[")๋Š” ์˜ค๋ฅธ์ชฝ ๋Œ€๊ด„ํ˜ธ("]")์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๋“ค์€ ์ž์‹ ๊ณผ ์ง์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์™ผ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋ชจ๋“  ๊ด„ํ˜ธ๋“ค์˜ ์ง์€ 1:1 ๋งค์นญ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ๊ด„ํ˜ธ ํ•˜๋‚˜๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ๊ด„ํ˜ธ์™€ ์ง์ง€์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ์ง์„ ์ด..

[C] ๋ฐฑ์ค€_1929๋ฒˆ

1929๋ฒˆ ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (silver 3) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค. ์ถœ๋ ฅ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ, ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ 1 3 16 ์˜ˆ์ œ ์ถœ๋ ฅ 1 3 5 7 11 13 #include int main() { // ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์‚ฌ์šฉ int start, end; int arr[1000000] = {0}; scanf("%d %d", &start, &end); for (int i = 0; i < 1000001; i++){ arr[i] = 1; // ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์˜ ์›์†Œ๋ฅผ ๋‹ค 1๋กœ ์ฑ„์›€ }..

๋ฐฑ์ค€/C 2022.05.15

[Reversing] 4์ฃผ์ฐจ dreamhack stage 5 - (1)

1. The Interactive DisAssembler 2. IDA ๋‘˜๋Ÿฌ๋ณด๊ธฐ Functions window IDA์—์„œ ๋ถ„์„ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•จ์ˆ˜๋ฅผ ๋‚˜์—ดํ•œ๋‹ค. ํ•ด๋‹น ์ฐฝ์—์„œ Ctrl + F ๋‹จ์ถ•ํ‚ค๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. Graph overview ํ•จ์ˆ˜๋ฅผ ๊ทธ๋ž˜ํ”„ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค. ํ•ด๋‹น ์ฐฝ์„ ํ†ตํ•ด ํ•จ์ˆ˜์˜ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. Output window ๋ถ„์„ ๊ณผ์ •์„ ๋ฉ”์‹œ์ง€๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ•ด๋‹น ์ฐฝ์„ ํ†ตํ•ด IDA์˜ ๋ถ„์„ ๊ณผ์ •์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. View ๋””์ปดํŒŒ์ผ ๊ฒฐ๊ณผ, Hex-View, ๊ตฌ์กฐ์ฒด ๋ชฉ๋ก ๋“ฑ์˜ ํ™”๋ฉด์„ ํ‘œ์‹œํ•œ๋‹ค. 3. IDA ๊ธฐ๋Šฅ ์ž„์˜ ์ฃผ์†Œ ๋ฐ ๋ ˆ์ด๋ธ” ์ด๋™ ๋‹จ์ถ•ํ‚ค G๋ฅผ ์ด์šฉํ•ด ์ž„์˜ ์ฃผ์†Œ ๋˜๋Š” ๋ ˆ์ด๋ธ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜ ๋ฐ ๋ณ€์ˆ˜ ์ด๋ฆ„ ์žฌ์„ค์ • ๋‹จ์ถ•ํ‚ค N์„ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ ๋ฐ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์žฌ์„ค..

[Reversing] 4์ฃผ์ฐจ dreamhack stage 5

Exercise: Helloworld 1. ์ •์  ๋ถ„์„ IDA๋กœ ํŒŒ์ผ ์—ด๊ธฐ main ํ•จ์ˆ˜ ์ฐพ๊ธฐ ์ •์  ๋ถ„์„์€ ์ฃผ๋กœ main ํ•จ์ˆ˜๋ฅผ ์ฐพ๊ณ , ์ด๋ฅผ ๋ถ„์„ํ•˜๋ฉฐ ์‹œ์ž‘๋œ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘ ์ง€์ ์ธ ์ง„์ž…์ (Entry Point, EP)๋ถ€ํ„ฐ ๋ถ„์„์„ ์‹œ์ž‘ํ•ด์„œ ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰ ์ด ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๊ทœ๋ชจ๊ฐ€ ์กฐ๊ธˆ๋งŒ ์ปค์ ธ๋„ ๋ถ„์„์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๊ธ‰์ฆ ๋Œ€์ƒ ํ•จ์ˆ˜์˜ ํŠน์„ฑ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ์™ธ์ ์ธ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๐Ÿ” ๋ฌธ์ž์—ด๋“ค์€ ํŠน์„ฑ์ƒ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ex) ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ๊ทธ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ž์—ด์€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„๊ณผ ์ธ์ž๊ฐ€ ์ ํ˜€์žˆ๊ธฐ๋„ ํ•˜๋‹ค. IDA๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก "๋ฌธ์ž์—ด ํƒ์ƒ‰"..

[Python] ๋ฐฑ์ค€_ 4150๋ฒˆ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ (silver 5) ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ ์ „ ๋‘ ํ•ญ์˜ ํ•ฉ์œผ๋กœ ๊ณ„์‚ฐ๋˜๋Š” ์ˆ˜์—ด์ด๋‹ค. ์ฒซ ๋‘ ํ•ญ์€ 1๋กœ ์ •์˜๋œ๋‹ค. f(1) = 1, f(2) = 1, f(n > 2) = f(n − 1) + f(n − 2) ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ๋ผ. ์˜ˆ์ œ ์ž…๋ ฅ 1 100 ์˜ˆ์ œ ์ถœ๋ ฅ 1 354224848179261915075 n = int(input()) fibo = [0, 1, 1] for i in range(3, n + 1): fibo.append(fibo[i-1] + fibo[i-2]) print(fibo[n]) ์„ค๋ช…) input์„ ํ†ตํ•ด ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ •์ˆ˜ n์„ ์ž…๋ ฅ๋ฐ›์•˜๋‹ค. fibo ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ ์–ธํ•ด์„œ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ, 2๋ฒˆ์งธ์˜ fibo๊ฐ’์„ ๊ฐ๊ฐ..

[Python] ๋ฐฑ์ค€_2581๋ฒˆ

์†Œ์ˆ˜(silver 5) ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ์ฃผ์–ด์งˆ ๋•Œ M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ๊ณจ๋ผ ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด M=60, N=100์ธ ๊ฒฝ์šฐ 60์ด์ƒ 100์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋Š” 61, 67, 71, 73, 79, 83, 89, 97 ์ด 8๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ์€ 620์ด๊ณ , ์ตœ์†Ÿ๊ฐ’์€ 61์ด ๋œ๋‹ค. ์ž…๋ ฅ ์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— M์ด, ๋‘˜์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. M๊ณผ N์€ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ์ถœ๋ ฅ M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ 1 60 100..