glibc-2.27 이 풀이는 잘못되었다 소켓과 네트워크에 대한 이해가 조금 더 필요할 것 같다 #1. 문제 살펴보기 문제를 실행해보기 전에 다음과 같은 코드가 필요하다. 그 이유는 socket() 때문이다 socket( ) 을 이용하기 위해서는 서버와 클라이언트에 대한 이해가 필요하다. 매우 개방적인 문제인 것 같다. NX(Non eXecutable) 가 안걸려있으니 bss같은 영역에 쉘코드 올려두고 ret을 해당 주소로 덮으면 될듯..? 두둥! RWX : Has RWX segments #2. 문제 분석하기 socket( ) 0 ) return handle_client(v4_fd); } while ( v4_fd >= 0 ); return -1; } 사용자에게 입력을 받기 시작하는 함수는 handle_c..
glibc-2.27 #1. 문제 살펴보기 처음보는 보호기법 3가지가 있다. 1. FORTIFY SSP와 비슷하게 일반 메모리 버퍼에 대해 overflow를 감지하여 주는 역할을 한다. (SSP : Stack Smashing Protector - Canary, ... ) 2. ASAN : Address Sanitizer google에서 제공하는 보호기법으로 아래에 해당하는 취약점을 방어한다고 한다. Use after free (dangling pointer dereference) Heap buffer overflow Stack buffer overflow Global buffer overflow Use after return Use after scope Initialization order bugs Mem..
#1. 문제 살펴보기 #include void win() { printf("You win!\n"); char buf[256]; FILE* f = fopen("./flag.txt", "r"); if (f == NULL) { puts("flag.txt not found - ping us on discord if this is happening on the shell server\n"); } else { fgets(buf, sizeof(buf), f); printf("flag: %s\n", buf); } } void vuln() { char buf[16]; printf("Type something>"); gets(buf); printf("You typed %s!\n", buf); } int main() { /..