전체 글345 FTZ - level18 hint 구글링 - 멀티 플렉싱 - 멀티 셀렉트 서버 하면 file descriptor와 관련된 select 함수에 대한 설명이 나온다. hint 분석 FD_ZERO(&fds) ☞ fd_set fds를 0으로 초기화한다. FD_SET(STDIN_FILENO, &fds) ☞ STDIN_FILENO : 표준입력(fd = 0)/ fds의 0번째를 1로 셋팅 if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) >= 1 ) ☞ select 함수는 데이터가 변경된 파일의 개수, 즉 fd_set에서 비트 값이 1인 필드의 개수를 반환/ 비트값이 1인 필드의 개수가 1개 이상이라면 if( fd_isset(fileno(stdin), &fds ) ☞ fileno 함수 : 파일 포인터를 넘겨.. 2021. 7. 26. FTZ - level17 hint 이번에도 void (*call)() = printit; 에서 printit의 주소대신 쉘코드의 주소를 넣어주면 될 것 같다. 지금 생각나는 풀이는 환경변수에 쉘 코드 넣고 그 환경변수의 주소로 덮어쓰기 export MYSHELL=$(python -c 'print "\x90"*0x1000 + "쉘코드"') 엄청 큰 nop를 가지고 끝에 쉘코드가 붙어있는 환경변수를 만든다. 스택 구조상 환경변수는 가장 위쪽 주소인(0xc0000000)에 가깝게 위치할 것이며, 환경변수와 기타 등등 main함수가 시작되기 전까지 쌓인 스택이 그리 많지 않을 것이다. 그러므로 0xc0000000 - 0x1000 위치로 익스플로잇을 해주면 nop를 건너뛰고 쉘 코드가 실행될 것이다. (나는 0xc0000000 - 0x1.. 2021. 7. 26. FTZ - level16 hint 이번엔 attackme만 있는게 아니라 attackme.c도 있다. 그런데 attackme.c는 열리지도 않고 tmp폴더로 복사도 안된다. attackme만 tmp로 옮겨서 gdb로 까봤다. hint에 나와있는 그대로인 것 같다. 항상 BOF하던대로 하는데, void (*call)() = printit 에서 printit 대신 shell함수의 주소를 넣어주면 된다. disas shell로 shell함수의 주소를 알 수 있으니까 2021. 7. 26. python socket select 함수 이해하기 멀티 플렉싱 하나의 통신 채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술 즉, 하나의 서버에서 여러 클라이언트를 모두 처리하는 것 하나의 서버에서 시그널(fd)를 통해 여러 클라이언트와 모두 데이터를 주고받는 것 select 함수 특징 - 한 곳에 여러 파일 디스크립터들을 모아놓고 동시에 관찰할 수 있다. 관찰할 수 있는 event 1. 수신한 데이터를 갖고 있는 소켓이 있는가? - read 2. 블로킹되지 않고 데이터의 전송이 가능한 소켓이 있는가? - write 3. 예외상황이 발생한 소켓은 무엇인가? - except readable, writable, exceptionable = select(readList, writeList, exceptList, timeout) readable : re.. 2021. 7. 26. OverlayFS 개념 https://blog.naver.com/alice_k106/221530340759 168. [Linux] 투명 셀로판지 이론을 통한 Overlay FS 사용 방법과 유니온 마운트 (Union Mount) 이해하기 이번 포스트에서는 OverlayFS (오버레이 파일 시스템) 에 대해서 다룬다. 참고로, 직접 사용해 보기에는... blog.naver.com 이 블로그의 내용을 정리했다. Union Mount File System 유니온 마운트 - 하나의 디렉터리 지점에 여러 개의 디렉터리를 마운트함으로써, 마치 하나의 통합된 디렉터리처럼 보이게 하는 것 유니온 마운트를 지원하는 파일 시스템 - AUFS, OverlayFS AUFS는 2006년 개발되었다. 또한 리눅스 커널의 mainline에 포함되어 있지.. 2021. 7. 24. FTZ - level15 hint 14번과 비슷한데 다른 점은 check가 포인터 변수라는 것. if (*check == 0xdeadbeef) ☞ check에 담긴 주소가 가리키는 곳에 0xdeadbeef가 담겨있어야 한다. gdb에서 x/50x main 으로 0xdeadbeef의 주소를 알 수 있다. 그렇다면 check에 방금 구한 0xdeadbeef의 주소를 넣어서 익스플로잇하면 된다. 코드 영역은 주소가 항상 고정인가? ☞ PIE 보호기법이 적용되어있다면 코드 영역의 주소도 바뀐다. 하지만 ftz 문제는 그럴 리 없다.. 다른 풀이 jump to filename with symbolic link 심볼릭 링크란? 바로가기같은 느낌. ln -s [원본파일] [새로만들파일이름] 심볼링 링크를 어떻게 활용할 것인가? cat /pr.. 2021. 7. 24. 이전 1 ··· 46 47 48 49 50 51 52 ··· 58 다음