Wargame

    [App-System] ELF x86 - Format string bug basic 2

    1. intro 2. code 및 분석 2.1. code #include #include #include #include int main( int argc, char ** argv ) { int var; int check = 0x04030201; char fmt[128]; if (argc 239 - 0x56 + 1 = 239 - 86 + 1 = 154 be => be - ef => 1be - ef = 446 - 239 = 207 ad => ad - be => 1ad - be = 429 - 190 = 239 de => de - ad = 222 - 173 = 49 가 된다. 다시 한번 페이로드를 변경해서 시도하면 ./ch14 `perl -e 'print "\xa8\xfa\xff\xbf","BBBB","\xa..

    [App-System] ELF x64 - Stack buffer overflow - basic

    1. intro 2. code 및 분석 2.1. code #include #include #include #include #include /* gcc -o ch35 ch35.c -fno-stack-protector -no-pie -Wl,-z,relro,-z,now,-z,noexecstack */ void callMeMaybe(){ char *argv[] = { "/bin/bash", "-p", NULL }; execve(argv[0], argv, NULL); } int main(int argc, char **argv){ char buffer[256]; int len, i; scanf("%s", buffer); len = strlen(buffer); printf("Hello %s\n", buffer); r..

    [App-System] ELF x86 - Format string bug basic 1

    1. intro 2. code & 분석 #include #include int main(int argc, char *argv[]){ FILE *secret = fopen("/challenge/app-systeme/ch5/.passwd", "rt"); char buffer[32]; fgets(buffer, sizeof(buffer), secret); printf(argv[1]); fclose(secret); return 0; } 코드를 요약하면 .passwd 파일을 열고 buffer 변수에 32byte를 할당하고 fgets로 buffer 변수 size만큼 secret 파일에서 가져와서 buffer 변수에 저장한 뒤 printf로 argv[1]을 출력하고 종료한다. 하지만 printf(변수명)을 사용하기 때..

    [App-System] ELF x86 - Stack buffer overflow basic 2

    1. intro 2. code & 분석 #include #include #include #include void shell() { setreuid(geteuid(), geteuid()); system("/bin/bash"); } void sup() { printf("Hey dude ! Waaaaazzaaaaaaaa ?!\n"); } void main() { int var; void (*func)()=sup; char buf[128]; fgets(buf,133,stdin); func(); } 우선 envi. config.에 NX, Heap exec가 걸려있다. 추후에 이에 대해서 다시 한번 정리하기로하고, 간단히 이야기하자면 buffer 내에 의미 있는 코드가 입력되더라도 실행되지는 않게 막아주는 보호 기..

    [App-System] ELF x86 - Stack buffer overflow basic 1

    1. intro 2. code & 분석 #include #include int main() { int var; int check = 0x04030201; char buf[40]; fgets(buf,45,stdin); printf("\n[buf]: %s\n", buf); printf("[check] %p\n", check); if ((check != 0x04030201) && (check != 0xdeadbeef)) printf ("\nYou are on the right way!\n"); if (check == 0xdeadbeef) { printf("Yeah dude! You win!\nOpening your shell...\n"); setreuid(geteuid(), geteuid()); system(..