분류 전체보기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. 이전 1 ··· 22 23 24 25 26 27 28 ··· 55 다음 728x90