목록분류 전체보기 (427)
안 쓰던 블로그
wow64 Windows on Windows의 약자로, 64비트 플랫폼에서도 기존의 32비트용으로 개발된 어플리케이션이 실행될 수 있도록 하는 기능이다 64비트 윈도우즈 상에서 32비트 윈도우즈를 실행시킨다는 점에서 가상머신 같은 역할을 한다고 볼 수 있다 wow64 file system redirection 32비트 프로그램을 64비트에서 실행 시켜야 하니까, 32비트 프로그램이 system32 폴더를 참조하면 윈도우즈가 자동으로 SysWOW64폴더로 리다이렉션 해 준다 그래서 같은 64비트 프로그램을 실행하더라도 32비트에서 실행되었나, 64비트에서 실행되었나에 따라 파일의 오프셋 값이 달라지기도 한다

TCP 연결 설정 과정은 3-way handshake TCP 연결 해제 과정은 4-way handshake이다 3-way handshake 1단계 두 시스템이 통신을 하기 전에 클라이언트는 포트가 닫힌 Closed 상태이다 서버는 해당 포트로 항상 서비스를 제공할 수 있는 Listen 상태이다 2단계 클라이언트가 처음 통신을 하려면 임의의 포트 번호가 클라이언트 프로그램에 할당되고, 클라이언트는 서버에 연결하고 싶다는 의사 표시로 SYN Sent 상태가 된다 3단계 클라이언트의 연결 요청을 받은 서버는 SYN Received 상태가 되고, 클라이언트에 연결을 해도 좋다는 의미로 SYN + ACK 패킷을 보낸다 4단계 클라이언트는 연결 요청에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버로 보낸..
프로토콜 서로 다른 시스템에 있는 개체 간 통신을 잘 하기 위한 통신 규약 네트워크에서 통신하려는 두 시스템 간에 무엇을 언제, 어떻게 통신할 것인지 미리 정한 약속 계층적 구조로 정의된다. 시스템 간 복잡한 통신 관련 상호작용을 세분화, 계층화, 표준화한 것 *개체: 데이터베이스 관리 시스템/전자우편 시스템/사용자 프로그램 *시스템: 하나 이상의 개체를 보유한 컴퓨터 TCP 프로토콜 OSI 7계층 중 4계층인 전송계층에 속하는 프로토콜 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로 에러 없이 교환할 수 있게 해 준다 인터넷에서 네트워크 계층의 기능을제공하는 프로토콜은 IP인데, IP 프로토콜 위에서 실행되는 전송 계층 프로토콜에는 TCP와 UDP로 나뉜다 응용 프로그램이 해당 응용 환경에..

목차 1. ARP 2. ARP Spoofing 3. ARP Spoofing 실습 3-1. 실습 환경 3-2. 실습 준비 3-3. 실습 진행 3-4. 실습 결과 4. ARP Spoofing 방어 방법 5. ARP Spoofing 공격의 한계 1. ARP 주소 결정 프로토콜(Address Resolution Protocol)의 약자로 네트워크 프로토콜 중 하나 네트워크 상에서 IP주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 프로토콜 다시 말해, TCP/IP 3계층(네트워크 계층)의 IP주소를 2계층(데이터 링크 계층)의 MAC주소로 대응시킨다 참고로 MAC주소는 아는데 IP를 모르는 경우에는 RARP를 쓴다 ARP 동작 1. 브로드캐스트로 MAC주소를 요청한다 2. 해당하는 IP를 가진 ..

네트워크 프로토콜 중 하나 네트워크 상에서 IP주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 프로토콜 다시 말해, TCP/IP 3계층(네트워크 계층)의 IP주소를 2계층(데이터 링크 계층)의 MAC주소로 대응시킨다 작동 방식 ARP 패킷은 request와 reply로 나뉜다 1. A가 B에게 request 패킷을 통해 B의 MAC주소 요청 2. B가 A에게 reply 패킷을 통해 MAC주소 전달 3. B는 A의 request 패킷으로 A의 ip-mac 정보를 arp 테이블에 저장 4. A는 B의 reply 패킷을 통해 B의 ip-mac 정보를 arp 테이블에 저장 실습 실습 방법 1. 가상머신 우분투에서 wireshark로 패킷을 캡쳐한다 2. 호스트OS에서 우분투에게 ping한다 3...

#include int main() { int a, b, c = 0; if(a > 9){ b = a; } else if(a % 2 == 1){ c = c + a; } else a++; return 0; }

이 문제에서도 rev1처럼 입력을 받고 뭔가 함수 호출 후에 corret wrong에 따라 분기한다 분기문에서 bp걸고 f7로 내부로 들어갔다 문자열을 한 글자씩 가져온 후에 어떤 연산을 거치고 input과 비교한다 한 글자씩 비교하는 함수를 총 0x18(23)번 반복하기 때문에 Flag가 총 0x18(23)글자인것을 먼저 확인해야 한다 (마지막은 \00) 첫 번째 글자를 구할 때는 카운트가 0부터 시작되기 때문에 Flag 첫 글자와 연산에 사용되는 비교 문자의 글자가 동일하다. 일단 규칙을 찾아야 한다. 첫 번째 글자는 그랬는데 두번째 글자부터는 카운트가 1로 증가하며 뭔가 연산이 시작되는 것을 볼 수 있음 첫 번째로 본인이 입력한 글자 ^ 카운트 연산을 한다 두 번째로 첫 번째 연산 과정에서 구한 결..