Pwnable

· Pwnable/FTZ
ID : level13 PW : have no clue 1. hint를 뜯어보자. level11와 상당히 유사하지만, long i가 추가된 걸 확인할 수 있다. main(int argc, char *argv[]) // 인자를 받음 long → 정수형변수, 4바이트 해석해보자면, i를 4바이트로, buf를 1024바이트로 선언했다. 렙14권한이 걸리고, 인자(인자가 argv임)가 전달되면 buf에 argv[1]을 복사하여 넣는다. 만약 i가 0x1234567이 아니라면 프로세스는 죽는다. (kill은 잘 모르겠음 추후 수정) strcpy함수가 쓰이고 버퍼의 크기에 대해 아무 언급이 없는걸 보면 버퍼오버플로우 문제라는 걸 알 수 있겠지? 바로 attackme를 tmp디렉토리로 복사하여 디버깅 해보자! (+그..
· Pwnable/FTZ
ID : level12 PW : it is like this 1. 상당히 level 11과 유사하다. 그냥 strcpy가 gets으로 바뀌었다 ㅎㅎ 디버깅 해서 보면 str, dummy 크기까지 걍 똑같다. 나이쓰 똑같이 환경변수를 이용해 풀어주었다. 환경변수에 쉘코드 저장하고, ret에 환경변수 주소 넣어주고~ 렙11과 다른 점은 인자를 넣는 방식인데, 페이로드 (python -c 'print "\x90"268 + "\x1e\xfb\xff\xbf"';cat)|./attackme 이렇게 작성하면 된다 ㅎㅎ 렙 13으로 ~ 참고: https://grayfieldbox.tistory.com/entry/FTZFree-Training-Zone-Level-12 (2020.02에 작성한 글을 가져왔습니다.)
· Pwnable/FTZ
ID : level11 PW : what!@#$? 1. 로그인 후 hint 파일을 읽어주자. 못 보던 attackme 파일도 있네. 코드를 분석해보자. #include #include int main( int argc, char *argv[] ) { char str[256]; //str배열의 크기를 256바이트로 지정 setreuid( 3092, 3092 ); //level12 권한 strcpy( str, argv[1] ); //argv[1]값을 str에 복사 printf( str ); //str 출력 } strcpy 함수는 NULL 문자 전까지의 문자열을 복사하는 함수이다. strcpy 함수에는 취약점이 존재하는데, 문자열의 길이를 검사하지 않기 때문에 버퍼의 크기보다 더 큰 문자열이 들어갈 경우 오버..
· Pwnable/FTZ
ID : level10 PW : interesting to hack! 1. hint를 읽어 줍니다. 두 명의 사용자가 대화를 나눈 대화방의 정보를 알려 줬군요 ! 그 대화방은 공유 메모리를 이용하여 만들어졌으며, key_t의 값은 7530이라고 합니다. 공유 메모리에 접근하는 소스코드를 작성해서 공유 메모리 데이터를 읽는 문제입니다. 📌 공유 메모리란? 공유 메모리 (Shared momory)는 여러 프로세스가 함께 사용하는 메모리를 말합니다. 이 공유 메모리를 이용하면 프로세스끼리 통신을 할 수 있으며, 같은 데이터를 공유할 수 있습니다. 이렇게 같은 메모리 영역을 공유하기 위해서는 공유 메모리를 생성한 후, 프로세스의 자신의 영역에 첨부를 한 후에 마치 자기 메모리를 사용하듯 사용합니다. 출처: ht..
· Pwnable/FTZ
ID: level9 PW: apple 1. level9에 로그인해주고 cat 명령어로 hint 파일을 읽어주자. 만약 buf2의 첫 두글자가 "go" 라면, Good Skill!을 출력하고 3010,3010권한으로 bash를 실행시켜 주는 코드인 것 같다 ! 3010,3010은 level10 권한이겠지! 그렇다면 어떻게 buf2 변수에 go 문자열을 넣을 수 있을까? 스택은 이렇게 되겠지? — — — RET[4] → 높은 주소 SFP[4] buf2[10] buf[10] → 낮은 주소 — — — 문제에서 요구하는 건 buf2의 첫 두글자가 "go"여야 하는데, 소스를 보면 buf만 입력받기 때문에 불가능하다. 하지만 ! 이 소스코드에서 취약점은 fgets 이다. 이 함수에서는 buf가 10바이트인데도 불구..
· Pwnable/FTZ
ID: level8 PW: break the world 1. 루트 디렉토리로 이동해서 find 명령으로 사이즈가 2700인 파일들만 출력했다. 📌 참고 ! 우선, 텍스트 파일을 읽기 위해 /etc/rc.d 디렉토리로 이동하여 found.txt를 읽었다. 똑같은 문자열이 여러개 출력되었다. 패스워드 파일의 형식인 것 같으니 분석 해보자 ! (level8의 shadow 파일!) 패스워드 파일이란, 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일이다. 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 1: 사용자명 2: 패스워드 3: 패스워드 파일 최종 수정일 4: 패스워드 변경 최소일 5: 패스워드 변경 최대일 6: 패스워드 만료 경고 기간 7: 패스워드 파기 기간 (패스워드 파기 후..
· Pwnable/FTZ
1. 역시 가장 먼저 열어보는 hint 파일. /bin/level7 명령을 실행하면 패스워드 입력을 요청한다니 /bin/level7 명령을 실행해보자 ! 힌트에 나온대로, /bin/level7을 실행하면 패스워드 입력을 요청한다. 아무말이나 입력했더니 wrong.txt 라는 파일이 없다는 에러메세지가 출력된다. 좀 멘붕이 와서 구글링 했더니, 이는 해커스쿨 FTZ 오류란다. 원래는 bin 디렉토리에 아래와 같은 내용이 있어야 한다. 올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에... ——- —__- —--__ —__-- 그래서 이 문제를 풀려면 /bin 디렉토리에 wrong.txt 라는 파일을 추가해줘야 한다. 2. wrong.txt 파일을 포함시키기 위해선, vi 에디터로 내용을 붙여넣으면 되지..
· Pwnable/FTZ
1. 로그인 하자마자 hint가 보인다. bbs : 쉽게 말해 전자게시판, 오래전에 쓰던 방식 텔넷 : 원격접속 서비스를 제공하는 네트워크 프로토콜 엔터를 치니 이런 화면이 나왔다. 하이텔, 나우누리, 천리안 모두 예전에 쓰던 PC 통신 방법이다. 1, 2, 3번 모두 선택해 보아도 터미널이 그냥 종료된다. 인터넷에 검색해보니, ctrl + c (작업 중지)를 누르면 명령어를 입력하는 창이 나온대서 눌렀더니, Can't use ctrl+c가 출력됐다. 그래서 초기화면에서 ctrl + c를 입력했더니 해결되었다. 이번엔 특이하게 password 파일이 대놓고 보인다. cat 명령으로 password 파일을 읽어주면 level7의 비번이 come together 이라는 것을 알 수 있다. 💡 bbs에서 많이..
lvolzoo
'Pwnable' 카테고리의 글 목록 (2 Page)