1602, 1/81 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   ÇØÅ·ÀßÇÏ°í½Í´Ù
   http://¾øÀ½
   [Write Up] Crypto Cat's CTF 2024 - BabyFlow

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=8592 [º¹»ç]


#include <stdio.h>
#include <string.h>

int main(void)
{
    char password[32];
    int admin = 0;

    printf("Enter password: ");
    fgets(password,50,stdin);

    if(strncmp(password, "SuPeRsEcUrEPaSsWoRd123", strlen("SuPeRsEcUrEPaSsWoRd123")) == 0)
    {
        printf("Correct Password!\n");
    }
    else
    {
        printf("Incorrect Password!\n");
        return 0;
    }

    if(admin)
    {
        printf("INTIGRITI{b4bypwn_9cdfb439c7876e703e307864c9167a15}\n");
    }else{
        printf("Are you sure you are admin? o.O\n");
    }

    return 0;
}
========================================================
¼Ò½º¸¦ º¸´Ï º°·Î ¾î·ÆÁö ¾Ê´Â ¹®Á¦¶ó°í ÆǴܵǾú´Ù. (¸öÇ®±â ¹®Á¦¶ó¼­ ±×·±°¡?)
checksec·Î ctfÆÄÀÏÀ» º¸´Ï ½ºÅà ī³ª¸®µµ ¾ø¾ú´Ù.
º¸Åë »ó½ÄÀûÀ¸·Î »ý°¢Çغ¸ÀÚ¸é CÄڵ忡¼­ Áö¿ªº¯¼ö°¡ À§¿¡¼­ ¾Æ·¡·Î ³»·Á¿Ã ¶§
½ºÅà ¸Þ¸ð¸®ÀÇ ³ôÀº ÁÖ¼Ò¿¡¼­ ³·Àº ÁÖ¼Ò·Î pushµÇ¸é¼­ ½×ÀÌ°Ô µÈ´Ù.
ÇÏÁö¸¸ ÄÄÆÄÀÏ·¯¿¡ µû¶ó Áö¿ªº¯¼öÀÇ À§¿¡¼­ ¾Æ·¡·Î ³»·Á¿Ã ¶§
¹Ýµå½Ã ½ºÅà ¸Þ¸ð¸®ÀÇ ³ôÀº ÁÖ¼Ò¿¡¼­ ³·Àº ÁÖ¼Ò·Î ÇÒ´çµÈ´Ù´Â º¸ÀåÀº
¾îµð¿¡µµ ¾ø´Ü °É ¸í½ÉÇØ¾ß µÈ´Ù.


[       Ä¿³Î ¿µ¿ª       ]    ³ôÀº ÁÖ¼Ò
[       ½ºÅà ¿µ¿ª       ]
[  °øÀ¯ ¶óÀ̺귯¸®  ]
[         Èü ¿µ¿ª        ]
[     µ¥ÀÌÅÍ ¿µ¿ª     ]
[     ÅؽºÆ® ¿µ¿ª     ]     ³·Àº ÁÖ¼Ò


¸Þ¸ð¸® °ø°£Àº(RAM) Å©°Ô ÄÚµå(Code), µ¥ÀÌÅÍ(Data), ½ºÅÃ(Stack), Èü(Heap) ¿µ¿ªÀ¸·Î ³ª´¶´Ù.

ÄÚµå(Code) ¿µ¿ª: ½ÇÇàÇÒ ÇÁ·Î±×·¥ÀÇ ÄÚµå
µ¥ÀÌÅÍ(Data) ¿µ¿ª: Àü¿ª º¯¼ö, Á¤Àû º¯¼ö
Èü(Heap) ¿µ¿ª: ·±Å¸ÀÓ ½Ã Å©±â°¡ °áÁ¤µÊ(»ç¿ëÀÚÀÇ µ¿Àû ÇÒ´ç)
½ºÅÃ(Stack) ¿µ¿ª: ÄÄÆÄÀÏ Å¸ÀÓ¿¡ Å©±â°¡ °áÁ¤µÊ




ÄÚµå(Code) ¿µ¿ª (ȤÀº ÅؽºÆ® ¿µ¿ª)

ÀÛ¼ºÇÑ ¼Ò½ºÄڵ尡 ÀúÀåµÇ´Â ¿µ¿ªÀ¸·Î ÅؽºÆ® ¿µ¿ªÀ̶ó°íµµ ºÎ¸¥´Ù.
±â°è¾î ÇüÅÂ(0,1)·Î ÀúÀåÇÑ´Ù.
½ÇÇà ÆÄÀÏÀ» ±¸¼ºÇÏ´Â ¸í·É¾îµéÀÌ ¿Ã¶ó°¡´Â ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î ÇÔ¼ö, Á¦¾î¹®, »ó¼ö µîÀÌ ¿©±â¿¡ ÁöÁ¤µÈ´Ù.
CPU´Â ÄÚµå ¿µ¿ª¿¡ ÀúÀåµÈ ¸í·É¾îµéÀ» Çϳª¾¿ °¡Á®°¡¼­ ½ÇÇàÇÑ´Ù.



µ¥ÀÌÅÍ(Data) ¿µ¿ª

Àü¿ª º¯¼ö¿Í Á¤Àû º¯¼ö(static)°¡ ÇÒ´çµÇ´Â ¿µ¿ªÀÌ´Ù.
¸ÞÀÎ ÇÔ¼ö Àü¿¡ ¼±¾ðµÇ¾î ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ°ú µ¿½Ã¿¡ ÇÒ´çµÇ°í ÇÁ·Î±×·¥ÀÌ Á¾·áµÅ¾ß ¸Þ¸ð¸®°¡ ¼Ò¸êµÈ´Ù.



Èü(Heap) ¿µ¿ª

ÀÌ °ø°£¿¡ ¸Þ¸ð¸® ÇÒ´çÇÏ´Â °ÍÀ» µ¿Àû ÇÒ´ç(Dynamic Memory Allocation) À̶ó°í ºÎ¸¥´Ù.
»ç¿ëÀÚ¿¡ ÀÇÇØ ¸Þ¸ð¸® °ø°£ÀÌ µ¿ÀûÀ¸·Î ÇÒ´çµÇ°í ÇØÁ¦µÈ´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§±îÁö ¸Þ¸ð¸®°¡ À¯ÁöµÇ±â ¶§¹®¿¡ »ç¿ëÇÏ°í ³­ ÈÄ ¹Ýµå½Ã ¸Å¸ð¸® ÇØÁ¦¸¦ ÇØÁà¾ß ÇÑ´Ù.(memory leak ¹ß»ý), Java¿¡¼­´Â °¡ºñÁö Ä÷ºÅÍ°¡ ÀÚµ¿À¸·Î ÇØÁ¦ÇÑ´Ù
¿µ¿ª Áß À¯ÀÏÇÏ°Ô ·±Å¸Àӽà ũ±â°¡ °áÁ¤
ÂüÁ¶Çü(Reference Type) µ¥ÀÌÅÍ Å¸ÀÔÀ» °®´Â °´Ã¼(ÀνºÅϽº), ¹è¿­ µîÀÌ ÀúÀåµÇ´Â °ø°£,
´Ü Èü ¿µ¿ª¿¡ ÀÖ´Â ¿ÀºêÁ§Æ®µéÀ» °¡¸®Å°´Â ·¹ÆÛ·±½º º¯¼ö´Â ½ºÅÿ¡ ÀûÀç
¸Þ¸ð¸®ÀÇ ³·Àº ÁÖ¼ÒºÎÅÍ ÇÒ´çµÇ´Â ¼±ÀÔ¼±Ãâ(FIFO) ±¸Á¶


½ºÅÃ(Stack) ¿µ¿ª

ÇÁ·Î±×·¥ÀÌ ÀÚµ¿À¸·Î »ç¿ëÇÏ´Â Àӽà ¸Þ¸ð¸® ¿µ¿ª
ÇÔ¼ö È£Ã⠽à »ý¼ºµÇ´Â Áö¿ª º¯¼ö¿Í ¸Å°³ º¯¼ö°¡ ÀúÀåµÇ´Â ¿µ¿ª
ÇÔ¼ö È£ÃâÀÌ ¿Ï·áµÇ¸é ÀúÀåµÈ ¸Þ¸ð¸®µµ ÇØÁ¦µÈ´Ù
¸Þ¸ð¸®ÀÇ ³ôÀº ÁÖ¼ÒºÎÅÍ ÇÒ´çµÇ´Â ÈÄÀÔ¼±Ãâ(LIFO) ±¸Á¶




½ºÅÃÀº ³ôÀº ÁÖ¼Ò¿¡¼­ ³·Àº ÁÖ¼Ò·Î ÇÒ´çµÇ°í
ÈüÀº ³·Àº ÁÖ¼Ò¿¡¼­ ³ôÀº ÁÖ¼Ò·Î ÇÒ´çµÈ´Ù.
±×¸®°í ±× »çÀÌ¿£ °øÀ¯ ¶óÀ̺귯¸® ¿µ¿ªÀÌ Á¸ÀçÇÑ´Ù.

±Ùº»ÀûÀ¸·Î ¿Ö ±×·²±î?

½ºÅú¸´Ù ³ôÀº ÁÖ¼Ò°¡ Ä¿³Î ¿µ¿ªÀÌ´Ù.
ÇÏÁö¸¸ ½ºÅÃÀÌ ³ôÀº ÁÖ¼Ò¿¡¼­ ³·Àº ÁÖ¼Ò·Î ÇÒ´çµÇ¸é
Ä¿³Î ¿µ¿ª¿¡ ħ¹üÇØÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù.
¶ÇÇÑ Èü°ú ½ºÅÃÀº ¸¶ÁÖº¸°í ¼­·Î¸¦ ÇâÇØ ÀÚ¶ó¸é¼­µµ
±× »çÀÌ¿¡ °øÀ¯ ¶óÀ̺귯¸® ¿µ¿ªÀÌ À־
¼­·Î ħ¹üÇϱâ Èûµé°Ú±Ý ¾ÆÅ°ÅØó°¡ ¼³°èµÇ¾î ÀÖ´Ù.

¼­·ÐÀº ¿©±â±îÁö ÇÏ°í...


ÀÏ´Ü ¹®Á¦ ÆÄÀÏÀº checksec¿¡ ÀÇÇØ È®ÀÎÇÑ °á°ú
½ºÅà ī³ª¸®°¡ ¹ß°ßµÇÁö ¾Ê¾Ò´Ù.

ka0r1@ka0r1-To-Be-Filled-By-O-E-M:~$ checksec --file=ctf
[*] '/home/ka0r1/ctf'
    Arch:       amd64-64-little
    RELRO:      Full RELRO
    Stack:      No canary found
    NX:         NX enabled
    PIE:        PIE enabled
    SHSTK:      Enabled
    IBT:        Enabled
    Stripped:   No





¹®Á¦¸¦ pwndbg·Î ºÐ¼®Çغ¸°Ú´Ù.

pwndbg> set disassembly intel
pwndbg> disassemble main
Dump of assembler code for function main:
   0x00000000000011a9 <+0>:        endbr64
   0x00000000000011ad <+4>:        push   rbp
   0x00000000000011ae <+5>:        mov    rbp,rsp
   0x00000000000011b1 <+8>:        sub    rsp,0x30
   0x00000000000011b5 <+12>:        mov    DWORD PTR [rbp-0x4],0x0
   0x00000000000011bc <+19>:        lea    rax,[rip+0xe45]        # 0x2008
   0x00000000000011c3 <+26>:        mov    rdi,rax
   0x00000000000011c6 <+29>:        mov    eax,0x0
   0x00000000000011cb <+34>:        call   0x10a0 <printf@plt>
   0x00000000000011d0 <+39>:        mov    rdx,QWORD PTR [rip+0x2e39]        # 0x4010 <stdin@GLIBC_2.2.5>
   0x00000000000011d7 <+46>:        lea    rax,[rbp-0x30]
   0x00000000000011db <+50>:        mov    esi,0x32
   0x00000000000011e0 <+55>:        mov    rdi,rax
   0x00000000000011e3 <+58>:        call   0x10b0 <fgets@plt>
   0x00000000000011e8 <+63>:        lea    rax,[rbp-0x30]
   0x00000000000011ec <+67>:        mov    edx,0x16
   0x00000000000011f1 <+72>:        lea    rcx,[rip+0xe21]        # 0x2019
   0x00000000000011f8 <+79>:        mov    rsi,rcx
   0x00000000000011fb <+82>:        mov    rdi,rax
   0x00000000000011fe <+85>:        call   0x1080 <strncmp@plt>
   0x0000000000001203 <+90>:        test   eax,eax
   0x0000000000001205 <+92>:        jne    0x121e <main+117>
   0x0000000000001207 <+94>:        lea    rax,[rip+0xe22]        # 0x2030
   0x000000000000120e <+101>:        mov    rdi,rax
   0x0000000000001211 <+104>:        call   0x1090 <puts@plt>
   0x0000000000001216 <+109>:        cmp    DWORD PTR [rbp-0x4],0x0
   0x000000000000121a <+113>:        je     0x1245 <main+156>
   0x000000000000121c <+115>:        jmp    0x1234 <main+139>
   0x000000000000121e <+117>:        lea    rax,[rip+0xe1d]        # 0x2042
   0x0000000000001225 <+124>:        mov    rdi,rax
   0x0000000000001228 <+127>:        call   0x1090 <puts@plt>
   0x000000000000122d <+132>:        mov    eax,0x0
   0x0000000000001232 <+137>:        jmp    0x1259 <main+176>
   0x0000000000001234 <+139>:        lea    rax,[rip+0xe1d]        # 0x2058
   0x000000000000123b <+146>:        mov    rdi,rax
   0x000000000000123e <+149>:        call   0x1090 <puts@plt>
   0x0000000000001243 <+154>:        jmp    0x1254 <main+171>
   0x0000000000001245 <+156>:        lea    rax,[rip+0xe44]        # 0x2090
   0x000000000000124c <+163>:        mov    rdi,rax
   0x000000000000124f <+166>:        call   0x1090 <puts@plt>
   0x0000000000001254 <+171>:        mov    eax,0x0
   0x0000000000001259 <+176>:        leave
   0x000000000000125a <+177>:        ret


¿©±â¼­ password[32]°¡ adminÀ» µ¤¾î¾º¿öÁú ¼ö ÀÖ´Ù´Â ¾î¼Àºí¸® Äڵ带 ºÐ¼®Çϸ鼭
¾î¶»°Ô ¾Ë ¼ö ÀÖÀ»±î? ±×°Ç ¾Æ·¡¿Í °°´Ù.

0x00000000000011ae <+5>:   mov    rbp,rsp
0x00000000000011b1 <+8>:   sub    rsp,0x30        ; ½ºÅà °ø°£ 0x30¸¸Å­ ÇÒ´ç
0x00000000000011b5 <+12>:  mov    DWORD PTR [rbp-0x4],0x0   ; admin ÃʱâÈ­
0x00000000000011d7 <+46>:  lea    rax,[rbp-0x30]  ; password ¹öÆÛ ½ÃÀÛ À§Ä¡






$./ctf
Enter password: SuPeRsEcUrEPaSsWoRd123AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Correct Password!
INTIGRITI{b4bypwn_9cdfb439c7876e703e307864c9167a15}























- ³¡ -

  Hit : 207     Date : 2024/12/29 01:18



    
     [°øÁö] °­Á¸¦ ¿Ã¸®½Ç ¶§´Â ¸»¸Ó¸®¸¦ ´Þ¾ÆÁÖ¼¼¿ä^¤Ñ^ [29] ¸Û¸Û 02/27 19610
1601   ½Ã½ºÅÛ ÄÝ ÃßÀû È®ÀåÆÇ[2]     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/19 126
1600   °£´ÜÇÑ ½Ã½ºÅÛ ÄÝ ÃßÀû ÇÁ·Î±×·¥ ¸¸µé±â     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/18 117
1599   [overthewire.org] - leviathan1     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/14 146
1598   [overthewire.org] - leviathan0     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/14 138
  [Write Up] Crypto Cat's CTF 2024 - BabyFlow     ÇØÅ·ÀßÇÏ°í½Í´Ù
12/29 206
1596   [pwnable.kr] bof     ÇØÅ·ÀßÇÏ°í½Í´Ù
12/25 193
1595   [pwnable.kr] Shellshock[1]     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 338
1594   ShellshockÀÇ ±âº» ¿ä¾à     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 312
1593   [pwnable.kr] fd     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 306
1592   VPNÀÌ ¿¬°áµÇ¾ú´Ù°¡ µµÁß¿¡ ²¨µµ À¥ ºê¶ó¿ìÀú»ó¿¡¼­ À¯ÁöµÇ´Â ÀÌÀ¯     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/22 287
1591   ÇØÄ¿µéÀÌ ÇØÅ·½Ã »ç¿ëÇÏ´Â µð·ºÅ丮 °ø°£[1]     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/22 359
1590   Keyboard Hooking -part2 - (Python3 ver)     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/20 337
1589   [Windows API] Keyboard Hooking     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/20 294
1588   [pwnable.kr] cmd1 °ø·«     ÇØÅ·ÀßÇÏ°í½Í´Ù
10/23 458
1587   netdiscover ÆÄÀ̽ãÀ¸·Î ±¸ÇöÇϱ⠠   ÇØÅ·ÀßÇÏ°í½Í´Ù
08/13 714
1586   ÆÄÀ̽ãÀ» ÀÌ¿ëÇÑ ½ÉÇà À¥ Å©·Ñ·¯     ÇØÅ·ÀßÇÏ°í½Í´Ù
08/13 583
1585   ÆÄÀ̽ã random¸ðµâÀ» ÀÌ¿ëÇÑ ¼ýÀÚ¸ÂÃ߱⠰ÔÀÓ ±¸Çö     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/30 1140
1584   ÆÄÀ̽ã äÆà ÇÁ·Î±×·¥ ±¸Çö     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/28 1061
1583   ÆÄÀ̽㠼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊ     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/26 1239
1 [2][3][4][5][6][7][8][9][10]..[81]

Copyright 1999-2025 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org