분류 전체보기

    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..