본문 바로가기

Hackerschool FTZ Write-up21

FTZ Level20 Write-up(FTZ Level20 풀이) 우와~~~ 마! 지! 막! 문제입니다 ㅎㅎ 역시 마지막 문제 답게 시간이 엄청 걸렸네요 ㅠㅠ 문제부터 보시죠! 문제가 심상치가 않습니다! 문제를 보니 버퍼는 80으로 선언되어있고 이번엔 fgets함수에서 길이 체크를 하는군요! 이 문제는 BOF가 아닌 FSB 즉! 포맷 스트링 버그를 이용해야 합니다. 혹시나 포맷 스트링을 모른다면 검색후에 다시 재 도전해보시길 바랍니다. ※포맷 스트링의 원리 및 해설은 자세하게 하지 않도록 하겠습니다. 이미 여러 문서에서 포맷스트링에 대한 이야기를 다루고 있으므로 저는 포맷스트링시에 몰랐던 부분에 대해 설명을 하도록하겠습니다. 정말로 시작해보죠!우선 자연스럽게 이제 gdb를 열어 스택의 구조가 어떻게 되는지 보기 위해 열려고 했으나 main의 symbol이 존재하지 않는.. 2018. 3. 27.
FTZ Level19 Write-up(FTZ Level19 풀이) 대망의 19번 입니다! 점점 문제가 갈수록 불친절해지는 것 같은건 기분탓... 인가요? 문제를 보면 이번엔 아무것도 없이 buf만 입력받고 땡이네요! 그래도 attackme파일엔 setuid가 설정이 되어있는데 예전엔 보이던 /bin/sh실행 명령어와 setrueid가 보이지 않아요.. 그러면 우리가 만들어 줘야 겠군요! 일단 리턴 어드레스 확인을 위해 아래와 같이 명령어를 작성하였는데 44번째에서 Segemantation Fault가 뜨는 것을 보니 저기가 리턴어드레스 주소인가보군요! 자 그러면 우리는 seteruid및 /bin/sh실행을 위한 쉘코드를 작성하여야 합니다. 이전까지 /bin/sh쉘코드는 많이 이용 하셨을 것이라 생각합니다. 그래서 이번엔 setreuid에 대한 쉘코드를 만들어 볼게요! .. 2018. 3. 26.
FTZ Level18 Write-up(FTZ Level18 풀이) 안녕하세요! 문제 18번 입니다! 이번 문제는 조금 특별한 문제이네요! BOF가 아닌... BUF이네요! 즉, 버퍼를 오버시키는 것이 아닌 버퍼를 언더 시키는 것이 목적인 문제 였습니다! 같이 문제를 보도록 하죠! 힌트 부터 무지막지하게 기네요. Key는 check의 값을 deadbeef로 만들면 shellout함수가 실행되며 권한 상승이 이루어 집니다!여기서 당황 했네요. 길게 장황하게 적어져있지만 결국엔 입력을 하나 받아 1크기(char)만큼 x의 주소에 담는 scanf같은 함수입니다. 다른점이있다면 이건 하나씩 루프가 진행되며 string에 담는 다는 것 정도 일까요? x의 값이 \r또는 \n 그러니까 개행 문자이면 그냥 \a를 출력하고 끝나네요! 위의 값에 대해 잘 모르시는 분들께서는 Crarri.. 2018. 3. 26.
FTZ Level17 Write-up(FTZ Level17 풀이) 17번 입니다! 뭔가 문제가 이전에 풀었던 문제들이랑 비슷비슷해서 속도가 많이 나는 것 같네요! 가보시죠! 이번엔 이전문제와는 달리 함수조차도 주지 않았네요.. 다행이 setreuid를 통해 권한은 설정해 주었으니 저희가 할일은 /bin/sh을 실행시키는 것인데.. 어디서 많이 해봤죠? 자연스럽게 gdb로 가줍니다! 늘 그랬듯 함수의 인자를 통해 변수의 주소를 알아오면 ~ c8은 buf이네요!마찬가지로 f0은 함수 포인터 변수 call이네요! 그리고 예전에 썼던 eggshell을 통해 /bin/sh을 실행시켜줄 수 있도록 하겠습니다! 오랜만에 보니 반갑네요. 그리고 그 주소를 이용해 공격 코드를 아래와 같이 작성해줍니다! eggshell에 대한 정보는 문제 11번에서 자세히 다루었습니다. 이해가 안되신다.. 2018. 3. 26.