Buffer Overflow★★★★★★

#include <stdio.h>                                                                                                             
#include <stdlib.h>                                                                                                            

char answer[0x100];                                                                                                            
int solve()                                                                                                                    
{                                                                                                                              
        FILE *fp = fopen("/home/bof/answer", "r");                                                                             
        fread(answer, 1, 100, fp);                                                                                             
        puts("Great! here is answer");                                                                                         
        puts(answer);                                                                                                          
        exit(0);                                                                                                               
}                                                                                                                              


void *get_retaddr()                                                                                                            
{                                                                                                                              
    __asm__ __volatile__ ( "movl 0x10c(%%esp), %%eax":::"eax");                                                                
}                                                                                                                              

int main()                                                                                                                     
{                                                                                                                              
       printf("current return address: %p\n", get_retaddr());                                                                  
       printf("your job is call %p\n", solve);                                                                                 
       char buf[0x100];                                                                                                        
       read(0, buf, 0x200);                                                                                                    
       printf("changed return address: %p\n", get_retaddr());                                                                  
}

이번에는 return address를 덮는것인데 [buf 0x100] [SFP 0x4] [RET 0x4] 이므로 Bof-easy 문제와 똑같이 260자를 입력해주고 주어지는 return address를 적어주면 된다.

ASLR이 걸려있지 않으므로 return address는 항상 동일하다.

Flag : GoN{The_B3sic_0f_Syst3m_h3cking}

results matching ""

    No results matching ""