해커스쿨(22)
-
[어설픈] 해커스쿨 FTZ level 14문제풀이
안녕하세요!오늘은 FTZ level 14문제를 풀어보도록 하겠습니다! 문제를 보니 아래와 같네요! main에 crap선언 되고 스택에 쌓이고check 선언되고 스택에 쌓이고char 형의 buf 20byte 선언되고 스택에 쌓이고 fgets로 표준입력으로 45byte받아서 버퍼에 저장하고!근데 문제는 버퍼 크기가 20인데 여기에 45만큼을저장하니 오버플로우가 생기겠죠? 근데 지난번 문제와 좀 비슷하긴한데더 쉬운거 같은데요?check의 값이 0xdeadbeef이면알아서 shell이 실행되네요! Level 13번은 저희가 RTL(Return To Library)하느라 시스템 함수 주소값이랑 /bin/sh 주소값 다 넣었어야 했는데 말이죠 ㅎ 자 일단 gdb를 실행시켜서 attackme를 분석해보니0x38만큼 ..
2019.01.31 -
[어설픈] 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