분류 전체보기(82)
-
[어설픈] FTZ 해커스쿨 Level 13문제풀이
안녕하세요!오늘은 FTZ level13을풀어 보도록 하겠습니다! 소스코드를 보니변수 i가 0x1234567로 선언되고1024크기의 char형의 버퍼가 선언되네요! uid level 14로 올려주고 (3094=leve14 id)저희의 argument 갯수가 1개 이상이면 argument [1](두번재 argument)을버퍼에 strcpy하네요!strcpy할 때 얼만큼복사할지 정하지 않아서 취약합니다! 그리고 마지막에 i값이 변조됐나확인하네요! 만약에 변수 i가초반에 선언됐던 값과 일치하지 않으면 "경고!! 버퍼오버플로우야!!"라고 출력하네요! 약간 메모리 보호기법중에 canary와 비슷하네요(ebp와 버퍼 사이에 값을 삽입해서값이 변조됐으면 종료, 안됐으면 그대로 실행하게 하는 기법) 이번에는 gdb로 사..
2019.01.28 -
[어설픈] 해커스쿨 FTZ level 12 문제풀이
안녕하세요! 오늘은 ftz level 12를풀어보겠습니다! 문제의 소스코드는 아래와 같습니다! char type의 크기 256의 배열 str(real effective)uid를 3093으로 세팅하죠?쉘에 id level13하면 3093이라고 뜰거에요!즉 level 13권한으로 상승 시켜준다는 말이죠 ㅎ 그리고 printf로 "문장을 입력하세요" 출력!그 다음에 gets로 저희로 부터 입력을 받네요!그걸 str에 저장하죠! 근데 여기서 gets가 얼마만큼 받을지 크기를 설정하지 않아서 취약하죠! 그리고 마지막엔 저희가 입력한 문자열 출력하고 함수가 끝납니다! 근데 생각해보니저희가 직전에 푼 level11과 차이점이딱 하나인거 같은데요? level11은 argv 방식으로입력을 받았고 level12는 argv..
2019.01.24 -
[어설픈] 해커스쿨 FTZ level 11 문제풀이
안녕하세요!오늘은 FTZ Level 11을 풀어볼게요! 제가 여기서 모르는 게 좀 많았어서공부하느라 시간이 좀 오래걸렸네요! 문제를 보니char형의 str버퍼 256byte를 할당하네요!그리고 setreuid를 3092로 설정하네요!권한 상승 시켜준다는 거죠(※ Why? 찾아보니 3092의 uid level 12의 것이에요) 그 다음에 strcpy로 저희의 argv[1]을 복사해오는데일단 여기서 취약점이 있죠!얼마나 복사해오는지 크기 안정했으니까요! 그리고 그 복사해온 것이str에 있는데 이걸 출력하네요printf함수로요! 뭐 버퍼 오버플로우 계속 해왔던 대로 풀면서 드는 생각! 버퍼크기(256byte)+ (더미가 존재하면 더미 크기 ???byte)+ EBP(4byte) 쉽게 설명해서 RET ADDR 전..
2019.01.22 -
[어설픈] 해커스쿨 FTZ Level 10 문제풀이
안녕하세요!오늘은 FTZ level 10을 풀어보도록하겠습니다! 힌트를 확인해보니, 아래와 같이 적혀있네요!요약해보면, 공유메모리를 사용하여 대화한 내용을읽어서 level11의 권한을 얻어라!key_t의 값은 7530이다!흠...공유메모리를 이용하라 했는데,저도 공유메모리가 뭔지 잘 몰라서인터넷에서 검색해봤습니다! 근데 일단 앞의 문제들 처럼setuid가 걸린 파일을 찾아보려했습니다! 저희가 원하는 건 level11의 권한을 프로그램이 실행될때 얻고 싶은 것이기 때문에find 명령어 뒤에 파일 소유주: level 11 / setuid 걸려있니(-perm 4000)를 입력하고 불필요한 에러메세지는 표시하지 않게 처리하고출력을 했는데 아무것도 나오지가 않았습니다! 그래서 공유메모리를 인터넷에서 검색해서 얻어..
2019.01.21 -
[어설픈] 해커스쿨 FTZ level9 문제풀이
안녕하세요! 오늘은 FTZ level 9 풀이를 해보도록 하겠습니다! 문제의 코드를 보니아래처럼 적혀있네요!main 함수 안에main 함수안에 지역변수로 buf2가 10바이트 선언되고buf가 10바이트 선언되네요! 지역변수는 stack에 쌓이는데!먼저 선언된 순서로 stack에 쌓이게 되니!buf가 buf2보다 위에 있겠네요!스택은 높은주소에서 낮은 주소로 쌓이니!아래처럼요! [낮은 주소] buf[10]buf2[10](saved) EBP[높은 주소] EIP(return address) 그리고 출력을 하네요! 오버플로우가 가능하다 = it can be overflow그리고 fgets함수로 사용자로부터 입력을 받네요!stdin=standard input(표준 입력)으로 40 byte를 입력받아buf에 저장하..
2019.01.20 -
[어설픈] 해커스쿨 FTZ Level 8 문제풀이
안녕하세요! 오늘은 Level 8 문제를 풀어보도록 하겠습니다!우선 힌트를 봐요!level 9의 shadow 파일이 서버 어딘가에 있다!음 shadow 파일이 뭐지? ※ Shadow 파일/etc/passwd에 있는 비밀번호 부분을 shadow라는 별도의 파일에 보관!쉽게 이해하면 비밀번호만 보관하는 안전한 창고! 그래서 아래와 같이 저장이 됩니다!1. Login Name2. Encrypted(암호화된 비밀번호)3.Last changed(언제 비번이 바뀌었냐)4. 5. ....등등 있습니다!그런데 저희가 관심있는 건 비밀번호죠! 2번째요!아래의 경우는 (이건 문제의 shadow파일 아니에요!)securitytest가 이름이고 : 를 기준으로 뒤에 $부터 . 까지가 비밀번호에요! 자 이제 그럼 shadow ..
2019.01.18