본문 바로가기

전체 글218

[Pwnable] GDB로 코드 분석 GDB로 코드 하나를 분석해보려고 한다. 이번에 분석해볼 코드는 아래와 같다. main 함수 내에 functhion 함수가 있고, 매개변수를 넣어 functhion을 실행한다. function 함수를 보면 char는 1바이트 씩이니까 buffer1은 15바이트, buffer2는 10바이트 크기를 가지고 있다. 소스파일 만들어주고 컴파일 시켜준다. +) 32비트로 컴파일 시켜줘야해서 위와 같이 다시 컴파일 시켜주었다. 위의 fatal error은 위의 sudo apt-get ~ 명령어로 해결할 수 있었다. gdb 실행시켜 준다. gdb에서 함수 디스어셈블 시켜봤다. (pdisas 명령어는 disass랑 같은데 색깔이 들어간다.) 프로그램이 시작되면 eip 레지스터 위치는 main함수의 시작점이 된다. (e.. 2021. 5. 11.
[Pwnable] GDB 사용방법 정리 GDB GNU Debugger 디버거는 어떤 라인이 실행할 때 어떤 값이 어떤 메모리 주소에 올라가고, 어떻게 동작하는지 과정을 보여주는 것이다. GDB는 오픈소스로 공개되어 있는 무료 디버거이다. gdb 설치 방법 sudo apt-get install gdb gdb-peda를 이용하면 더 편리하게 볼 수 있다. gdb-peda 설치 방법 git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit 명령어 기능 사용법 breakpoint 걸기 b *[메모리 주소/함수이름/offset] 다음 breakpoint까지 실행 continue breakpoint 정보 확인 info b breakpoint .. 2021. 5. 11.
[pwnable.kr] collision 먼저 ls를 해보면 요렇게 나온다. 당연히 flag는 실행이 안되는데, 그래서 col을 실행해보면 20바이트를 받는 것을 알 수 있다. 그래서 넣어보면 패스워드가 틀렸다고 나온다. 아마 20바이트의 옳은 패스워드를 찾아야 할 것 같다. 한번 코드를 살펴보자 main 함수를 보면 첫 번째 if문에서 매개변수 개수를 체크하고 2개보다 적으면 사용법을 출력한다. 두 번째 if문에서는 입력 값의 바이트가 20바이트인지 확인한다. 세 번째 if문에서는 hashcode와 check_password 함수 들어간 값과 비교해 flag를 출력한다. 그렇지 않으면 wrong passcode가 출력된다. check_password 함수를 보면 입력받은 매개변수 값을 받아와서 int형 포인터 변수로 가리키고 for문에 4바이.. 2021. 5. 5.
[XCZ.kr] prob.24 Memoryyyyy Dumpppppp 문제 파일이 두 개가 있는데, xczprob2.7z.001 파일을 압축 풀어 나온 xczprob2 파일을 볼라틸리티 imageinfo 해주었다. OS 버전이 WinXPSWinXPSP2x86인 것을 확인할 수 있었다. 이제 psscan으로 프로세스 정보도 한번 보자 작업프로그램이 갑자기 꺼졌고, 작업파일들이 모두 다 삭제되었다고 한다. 프로세스를 살펴본 걸론 모르겠어서 다른 명령어로 더 살펴보았다. connections 명령어는 Windows XP, Windows 2003 Server만 사용 가능한 활성화 상태의 네트워크 연결 정보를 보여준다. 작업프로그램이 갑자기 꺼졌으면 지금 활성화 상태의 네트워크 연결 정보를 보면 범인인 프로세스가 나올 것이라 생각했다. psscan에서 해당 pid를 보니 nc.ex.. 2021. 5. 4.
[ctf-d] GrrCON 2015 #2 이번 문제에도 이메일이라는 키워드가 있다. 그래서 지난 문제에서 사용한 txt 파일을 사용해보기로 했다. exe파일이 꽤 나왔는데 하나하나 넣어보다가 하나가 성공했다 ! 2021. 5. 4.
[ctf-d] GrrCON 2015 #1 메모리 문제이므로 volatility를 사용했다. 먼저 imageinfo로 운영체제 버전을 알아낸다.(Win7SP1x86) psscan은 메모리 덤프 당시의 프로세스 상태를 은닉 프로세스까지 모두 찾아 출력해줄 수 있다. 굉장히 많은 프로세스들이 나오는데, 그 중에서도 OUTLOOK.EXE가 눈에 띈다. 문제에서 전자메일 주소를 물어봤으므로 outlook이 의심스럽다. OUTLOOK.EXE의 PID가 3196인 것을 확인했으니 해당 부분을 덤프뜨자 그럼 이렇게 같은 디렉토리 내에 덤프파일이 생성된다. 이제 덤프파일을 txt 파일로 확인해보자. 그러면 txt 파일이 생성된다. txt파일의 내용이 굉장히 많아서 찾기 기능으로 이메일 주소를 찾아보았다. 처음엔 .com으로 찾아봤더니 내용이 너무 많아 outl.. 2021. 5. 4.
728x90