728x90
반응형
CTF 문제를 접하다보면 악성코드 분석 등의 문제에서 바이너리가 통신하는 IP 주소를 구해야 하는 문제가 있다.
와이어샤크나 프록시를 이용해서 IP를 구하는 방법이 가장 덜 귀찮지만 리버싱을 통해 IP를 구해야 할 필요가 가끔 있는데,
여러 방법이 있겠지만 가장 단순한 방법은 connect 함수에 브레이크 포인트를 설치해 보는 방법이다.
https://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-connect
int WSAAPI connect(
[in] SOCKET s,
[in] const sockaddr *name,
[in] int namelen
);
connect 함수는 위 링크에서 확인할 수 있듯이 두 번쨰 인자로 sockaddr 구조체의 주소를 받는데, sockaddr 구조체를 통해 어느 ip에 연결하고자 하는지 확인할 수 있다.
https://learn.microsoft.com/ko-kr/windows/win32/winsock/sockaddr-2
struct sockaddr {
ushort sa_family;
char sa_data[14];
};
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sockaddr 구조체에 저장된 ip는 구글에 'int to ip' 검색해서 나오는 적당한 컨버터 사이트에서 변환해 ip 주소를 확인할 수 있다.
https://www.browserling.com/tools/dec-to-ip
.
728x90
반응형
'리버싱 > CTF' 카테고리의 다른 글
[SSCTF 2016 Quals] Re2 (0) | 2016.07.15 |
---|
댓글