본문 바로가기

Swing41

[Network] ARP 프로토콜 개념과 실습 Ethernet(이더넷)이란? 데이터 링크(2계층) 프로토콜 중 하나로 기기 고유의 MAC 주소를 갖고 상호간 데이터를 주고받을 수 있도록 만들어진 프로토콜이다. 1. Preamble & SFD (Start Frame Delimiter) Preamble과 SFD는 헤더로 인식되지 않으며 단지 Frame의 시작을 알려주기 위한 정보이다. 크기는 항상 7byte(Preamble)와 1byte(SFC)로 고정되어 있다. 2. Ethernet Header Destination Address : 목적지(송신) MAC 주소 Source Address : 출발지(수신)의 MAC 주소 * 다른 프로토콜 구조와 다르게 목적지 MAC 주소가 출발지 MAC 주소보다 앞에 있음 Length : 상위 계층에 사용된 프로토콜이 .. 2020. 9. 20.
[Reversing] 어셈블리어 C언어로 변환하기 #1 주어진 어셈블리어 main() - 1 push rbp rbp는 스택의 첫 시작 주소가 저장되는 포인터 레지스터다. 그래서 push rbp를 통해 main 함수의 시작 주소가 스택에 저장된다. mov rbp, rsp Rsp는 항상 스택의 끝 지점 주소를 갖고 있는 포인터 레지스터다. 현재 main을 호출한 상태이므로 가장 끝 지점과 시작 주소가 같을 것이다. 그래서 rsp에 rbp 값을 넣어주어 rbp는 항상 시작 주소를 갖고 있고 rsp는 계속 움직이며 스택의 끝 지점을 가리키고 있게 된다. sub rsp, 16 이 명령어는 현재 rsp가 가리키는 주소를 16byte만큼 빼 스택을 사용할 수 있도록 준비하는 것이다. (지역변수 공간 확보) mov DWORD PTR [rbp-4], 1 rbp – 4 주소에.. 2020. 9. 14.
[Reversing] abex' Crackme #1 exe 파일을 실행시키면 다음과같이 나온다 코드를 살펴보면 위 에러가 출력되게 하는 메시지 박스와 YEAH! Ok, I really think that your HD is a CD-ROM! :p이 있다. 아마 이 문장이 출력되는 메시지 박스를 띄워야 하는 것 같다. * MessageBoxA int MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType ); MessageBoxA(핸들, 내용, 제목, 박스 종류) 함수로 메시지 박스는 총 4개의 인수를 가진다. * GetDirveType 함수를 호출하기 바로 전에 'c:\\'로 설정했기 때문에 함수에서 반환 값이 3이 되어 고정 미디어라는 것을 알 수 있다. UINT GetDriveTypeA.. 2020. 9. 14.
[Reversing] x86(32 bit) / x64(64 bit) 호출규약 함수 호출 규약이란? 함수를 호출할 때 파라미터를 어떤 식으로 전달하는가에 대한 약속이다. X86 함수 호출 규약 (32 bit) 1. __cdecl - C declaration이라는 의미로 C 프로그래밍 언어가 기원한 호출 규약이다 - C 언어에서 사용되며 함수 호출이 반환된 뒤 caller(호출자)에서 스택을 정리한다 (함수 호출 전과 후의 ESP 위치가 같아야 됨!) - 매개변수를 스택에 push해 함수를 호출할 때 전달해준다 (오른쪽에서 왼쪽으로 인자를 스택에 넣는다) - 가변 인수 함수를 만들 때는 반드시 cdecl 호출 규약을 사용해야 한다 - 함수 앞에 __을 추가한다 - 함수 호출규약을 입력하지 않으면 기본값으로 __cdecl이 설정된다 예시 코드 #include int __cdecl cd.. 2020. 9. 14.
[Network] 네트워크 아키텍쳐의 종류 1. NAT * 실습 추가 예정 [ 정리 ] NAT Network Address Translation의 약자로 게스트 OS가 호스트 OS의 NIC을 이용해 외부와 통신하는 아키텍쳐이다. 게스트에서 ping(8.8.8.8)을 통해 호스트와 통신하면 서로 통신하고 있음을 와이어샤크를 통해 확인할 수 있다. 왜냐하면 게스트 OS에서 인터넷에 통신을 요청하면 가상머신에서 밖으로 나가 Host의 NIC을 거쳐야 한다. 그래서 호스트 OS에서도 패킷이 잡히게 되는 것이다(Host IP로). 하지만 반대로 호스트에서 ping(8.8.8.8)을 진행하면 호스트에서는 패킷들이 잡히지만 게스트 OS에서는 잡히지 않는다. 왜냐하면 호스트 OS에서는 바로 NIC를 지나 라우터를 통해 인터넷과 통신하면 되므로 이때 게스트 OS.. 2020. 9. 14.
[Wargame_Dreamhack] rev-basic-0 보호되어 있는 글 입니다. 2020. 9. 13.