Python Challenge level 7 Python challenge level 7 2016.12.23. 처음에 접속했을 때 그냥 이렇게만 되어있고 뭐 소스코드도 정말 저게 끝이고 그래서 그냥 가만히 보고만 있었다. 그러다 그냥 쿠키를 확인해봤는데 ...?뭐 어쩌라는 걸까. 다시 고이 접고 생각을 하다 it’s in the air에서 it을 찾으라는 건가 싶어서 설마하면서 oxygen을 입력해보았다. ...^^나만 oxygen.html 찾는 데만 10분 넘게 걸렸나 싶어 다른 사람들 풀이를 보았는데 나만 그런 것 같다. 이런 형식의 사진은 CTF에서도 종종 접하는 사진이다. 아마 저기 띠 부분 RGB값을 이용해 아스키코드로 바꿔서 어찌저찌 하다보면 글자가 나오겠지 우선 사진을 받고 코드를 짜자. Image 모듈을 사용하면 되는데 나는 우분투에.. 더보기 FTZ level 19 FTZ level 19 hint 갑자기 너무 간단해져서 당황스럽지만 해오던 방법대로 풀어보자 ebp-40부터 buf를 받는 것을 확인할 수 있다. 환경변수를 만들고 그 주소를 확인한다. 근데 id가 안바뀐다. 찾아보니 setreuid(,)이 빠져 이 부분이 추가된 쉘코드가 필요하다고 한다. 그렇다면 일단 level20의 uid를 찾아 쉘코드를 만든다. uid를 설정하는 코드 컴파일 시 –static –g옵션을 주어 컴파일 한다. 위 코드를 gdb로 까면 setreuid함수를 불러 인자를 넣는 부분이 있다. 그리고 disas setreuid를 해서 필요한 부분을 본다. 이 두 부분을 토대로 어셈블리 코드를 작성하면 mov ebx, 0xc1c mov ecx, 0xc1c mov eax, 0x46 int 0x8.. 더보기 FTZ level 18 FTZ level 18 hint while문 안의 내용을 무한반복한다. switch문에서 string에 데이터가 저장되면서 count값이 변하는데 100이상이면 what are you trying to do?를출력 check에 0xdeadbeef가 들어있으면 shellout함수 실행 FD_ZERO(&fds);부터 if(FD_ISSET(fileno(stdin),&fds))까지 키보드로 입력을 받아 입력버퍼에 저장하는 과정 read(fileno(stdin),&x,1); 입력버퍼에서 1byte를 읽어 &x에 저장하고 데이터에서 1byte만큼 옮겨 간다. while문 반복이 되면서 다음 1byte를 입력버퍼에서 읽어 &x에 저장하여 조건에 맞는 switch문이 실행 x값이 0x08 이면 count 1감소 우선 .. 더보기 이전 1 ··· 16 17 18 19 20 21 22 ··· 36 다음