2021/04

    WSL2 기반 docker 사용시 메모리 이슈(Vmmem)

    WSL2 기반 docker 사용시 메모리 이슈(Vmmem)

    WSL 을 설치해서 쓴 지 며칠 되지 않았는데, 노트북이 너무 느려진 것 같아 작업관리자를 켜보았더니 이게 무슨 일이야.. 메모리를 무식하게 잡아먹고 있는 놈을 보았다. Vmmem 이 뭐하는 친군지 찾아보니 WSL 를 설치할 때 같이 다운로드한 docker 를 실행시켰을 때 같이 돌아가는 프로그램인 것을 확인. 노트북 부팅 시에 docker 가 자동 실행되게 설정해놨던 터라 우선 부팅 시 docker 자동 실행 옵션을 껐다. docker desktop 어플리케이션을 실행하고 작업표시줄 docker 아이콘을 우클릭한 뒤 세팅으로 들어가자. General 탭에서 Start Docker Desktop when you log in 옵션을 체크 해제했다. 재부팅 시 자동으로 실행되는 것은 막았지만, 여전히 doc..

    Pwnable.kr :: Toddler's Bottle - collision write up

    Pwnable.kr :: Toddler's Bottle - collision write up

    Pwnable.kr 의 두번째 문제를 풀어보자. 이번 문제는 MD5 hash collision 에 대한 문제라는 힌트를 주고 있다. 그러면 Hash 는 무엇이고 Hash collision 이 무엇인지 간단하게 알아보자. Hash 란 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 것을 의미한다. 한 개의 입력값에 대해 한 개의 출력값이 나오는데, 이 입력값의 범위는 무한한 데 비해 출력값의 범위는 유한하기 때문에 입력이 다름에도 불구하고 드물게 동일한 값이 출력되는 경우가 존재한다. 이러한 경우를 '충돌' (Collsiion)이 발생했다고 한다. 이제 문제를 살펴보자. 역시나 flag 파일이 존재하고 권한이 없기 때문에 setUID 가 걸려있는 col 파일을 이용해서 문제를 해결..

    Pwnable.kr :: Toddler's Bottle - fd write up

    Pwnable.kr :: Toddler's Bottle - fd write up

    1번 문제 fd 를 풀어보았다. fd 는 File Descriptor 를 의미한다. 문제를 풀어보면 알 수 있듯이 File Descriptor 를 모르면 풀 수 없는 문제이다. 문제에서도 "What is a file descriptor?"라는 힌트를 주고 있다. ssh 로 fd@pwnable.kr 에 접속해보자. 파일을 살펴봤더니 flag 파일을 확인할 수 있으면 문제가 해결될 것 같다. 하지만 현재 권한이 없기 때문에 직접 볼 수는 없고, fd 파일에 setUID 가 걸려있으므로 fd 파일을 이용하면 flag 를 출력할 수 있을 것 같다. 우선 fd.c 파일의 소스코드를 확인해보자. main 함수의 매개변수로 들어가 있는 argc 는 명령 인자의 개수를 의미하고 argv는 인자의 벡터를 의미하는데, 인..

    GDB :: gdb 사용법 및 옵션 정리

    GDB :: gdb 사용법 및 옵션 정리

    GDB 라고 부르는 GNU Debugger는 GNU 소프트웨어 시스템을 위한 기본 디버거. GDB는 다양한 유닉스 기반의 시스템에서 동작하는 이식성 있는 디버거로, 에이다, C, C++, 포트란 등의 여러 프로그래밍 언어를 지원. GDB 사용법 % gcc -g test.c -o test % gdb (gdb) file [test] // symbol table을 불러와서 디버깅 준비. (gdb) list // 현재 위치에서 소스 파일의 내용을 10줄 보여줌. (gdb) run (r) // 프로그램 시작. (gdb) break (b) // 라인 번호나 함수 이름을 인자로 줄 수 있음. 특정 라인이나 함수에 브레이크 포인트 설정. (gdb) disas [func or var] // 특정 주소를 disassemb..