v5가 함수 포인터로 선언되어 있으므로 v5 자리에 쉘을 실행시키는 함수를 넣으면 될 것 같다. gdb로 분석하여 다른 함수들이 존재하는지 살펴보자. 이번 문제는 gdb와 ida로 분석해보면 함수 목록중에 shell 이라는 함수가 존재한다. 이 부분을 살펴보자. 역시 쉘을 실행시키는 함수가 있다. 이 함수의 주소를 찾아서 v5 자리에 덮어주면 쉘이 실행될 것이다. —————————— High Address | ret(4) | —————————— | sfp(4) | —————————— ← ebp | dummy | —————————— | v5 | —————————— ← ebp - 0xc | dummy | —————————— | s | —————————— Low Address ← ebp -0x8c from p..
passcode : throw me away (NO DRAG, NO PASSCODE) C언어로 구성된 간단한 소켓 프로그래밍 코드이다. 소켓 통신이란? 소켓 : IP address 와 Port 넘버가 합쳐진, 네트워크 상에서 서버 프로그램과 클리어언트 프로그램이 통신을 할 수 있도록 해주는 소프트웨어 장치이다. 엔드 포인트 : IP address + Port 조합, 식별자로 사용됨 일반적으로 서버는 특정 포트가 바인딩된 소켓를 가지고 특정 컴퓨터에서 작동한다. 클라이언트는 서버의 IP 주소 및 호스트 네임과 포트를 알고 있으며 이를 이용하여 연결 요청을 하게 된다. 요청을 하게 되면 서버는 소켓으로부터 요청을 받아들인다. 서버와 클라이언트가 통신을 하기 위한 과정은 다음과 같다. 클라이언트가 서버에 연결..