CTF/Pwn
-
[Hack CTF - Pwnable] Basic_BOF #2 Write UpCTF/Pwn 2019. 8. 16. 15:37
사실 엄청나게 쉬운 문제인데 너무 돌아갔었다. 헛수고한 시간이 화가나서 라업을 적기로 했다. 기드라로 확인한 파일의 메인 함수이다. fget으로 입력을 받고 그와 상관없이 sup 함수를 실행하기 위해서 함수 포인터를 사용하였다. sup 함수는 간단한 문구 출력 함수이다. 그래서 이 함수 포인터 스택값을 조작하기 위해서 개고생을 했다. 쉘코드를 버퍼에 입력해서 버퍼 값 주소를 찾아서 넘겨주려 했는데 사실 더 간단한 법이 있었다. 출제자님께서 저처럼 고생하지 말라고 사실 친절하게 shell 함수를 만들어두셨었다. 하.. 이렇게 떠먹여주고 있엇다니; 그래서 당장 이 함수의 주소값을 알아봤다. shell 함수의 어셈블리어 코드의 시작 주소는 0x0804849b이다. 그래서 이 주소를 fget 다음에 오는 sub..
-
해커스쿨 FTZ - Clear 후기CTF/Pwn 2019. 8. 14. 00:33
FTZ 를 드디어 끝맞쳤다. 옛날같으면 시간이 얼만큼 흐르든지 간에 열심히 안보고 풀면서 씨름해나갔을텐데 요즘 할 일이 너무 많아진 관계로 그러한 방법을 사용하지 못해서 너무 아쉬웠다. 하지만 빠르게 막힐때마다 풀이를 보고 왜 그런지 이해해가며 적용시키며 풀어가는 것도 공부가 꽤나 되었다. 주로 리눅스 시스템에서 시스템의 맹점을 초반에 다루고 그다음에는 buffer over flow, format string 등을 다룬다. 이 세가지를 알고 푼다면 문제풀이가 가능할 것이고 이 세가지를 배우기 위해서 풀게된다면 나처럼 해답을 보면서 따라가며 배우는 식이 될것이다. 어느쪽이든지 유익한 듯하다. 이제 LOB 풀러 가야지...
-
FTZ - level17 풀이 / 환경변수 등록을 이용한 BOFCTF/Pwn 2019. 8. 13. 20:47
힌트를 보면 call 함수를 불러오는 자리에 쉘코드를 입력한 주소를 적어두면 될 것이다. gdb를 통해서 열어보자 attackme를 tmp로 우선 복사해서 bof를 gdb로 열어보자 가장먼저 메인을 확인해보면 buf는 ebp-56에 저장이 되고 있었다. 마지막 call에서 eax를 부르는 곳이 printit함수로 보이며 ebp-16이란 것을 알수가 있었다. 우리는 40만큼 더미값을 넣어주고 그 다음 4byte에 쉘코드 주소를 넣어주면 되는 것이다. gdb를 나와서 환경변수를 이용하도록 하자. 길다.. 쉘코드 내용은 당연히 system("/bin/sh"); 이다. env.c를 만들고 컴파일해서 실행함으로써 내가 등록한 환경변수의 주소값을 알아오자. 이제 이걸통해서 실행할때 이 주소를 넣어주면 끝 이 다음은..
-
FTZ - level8 / 파일 용량을 이용한 find 검색 활용CTF/Pwn 2019. 8. 12. 15:05
힌트를 보면 level9의 shadow 파일이 서버 어딘가에 숨겨져 있다고 적혀있고 그 파일의 용량은 2700이라고만 알려주었다. 우리가 이 파일을 찾으면 비밀번호를 알수 있는 이유는 shadow파일의 역할 때문인데 shadow파일이란 원래는 /etc/라는 경로에 저장되어 있으며 유저들의 정보를 저장하고 있고 비밀번호 또한 여기에 저장되어서 로그인할때 이 파일로 아이디와 비밀번호를 확인하게 된다. 당연히 문제형식이기 때문에 실제 /etc/shadow 는 퍼미션 디나이로 볼수 없으며 저 숨겨놓은 파일을 찾으면 될 것 같았다. find 명령어로 어떻겧 하면 특정 용량의 파일을 검색할 수있는지 help 옵션으로 찾아보았다. 음.. 그만 알아보자.. 인터넷을 통해서 좀더 검색해보았다. find [찾고자 하는 상..