목록Computer Science (20)
보안 / AI / 프로그래밍
Debugger는 x96dbg 프로그램을 사용했습니다. 먼저 Debugger로 프로그램을 실행해 봤습니다. 그리고 아무 글자나 입력하고, 반응을 살펴보았습니다. 저번 문제와 동일하게 Wrong 이라는 문자열을 반환하네요. 이번에도 저번 문제와 동일하게 Input을 받는 지점을 살펴보겠습니다. 이번에도 프로그램 흐름이 Correct를 향해야 한다는 느낌이 오시나요? 이번에도 Correct로 흐름이 유지되려면 test eax, eax와 je ... 에서 알 수 있듯이, eax는 0이 되서는 안됩니다. 그러면 test 코드 위에 있는 call을 따라 들어가 보겠습니다. 이번에는 뭔가 같은 코드들이 반복된다는 느낌이 오는데요. 코드를 잘 보시면 rax를 계속 증가시키면서 movzx eax, byte btre d..
Debugger 는 x96dbg 프로그램을 사용했습니다. 먼저 Debugger 로 프로그램을 실행해 봤습니다. 일단 저 "Input :" 문자열이 입력되는 곳, 입력한 "aaaaaaaaaaaaa"이 저장된 곳 위주로 찾았습니다. 그 주변에서 입력받은 문자열이 맞는지 아닌지 대조하는 조건분기점이 있을 것이라고 예상했기 때문입니다. 첫번째 BP(BreakPoint)는 문자열을 출력하는 함수입니다. 보통 call을 할 때, call 하는 함수의 필요한 인자들을 레지스터에 담아두고 call을 부릅니다. 자세히 보시면 rcx 레지스터에 "Input :" 문자열을 가진 메모리 주소를 담는 것을 볼 수 있습니다. 세번째 BP를 보시면 eax가 0인지 아닌지 검사하고 있습니다. 만약 0이면 wrong을 , 아니면 Co..
[0x440] 네트워크 스니핑 - 비스위치 네트워크 환경에서의 스니핑이란? - "sniff"라는 단어의 의미(냄새를 맡다, 코를 킁킁거리다)에서도 알 수 있듯이, 스니퍼는 "컴퓨터 네트워크상에 흘러다니는 트래픽을 엿듣는 도청장치"라고 말할 수 있습니다. 그리고 "스니핑"이란 이러한 스니퍼를 이용하여 네트워크상의 데이터를 도청하는 행위를 말합니다. - 비스위치 네트워크에서는 이더넷 패킷이 네트워크의 모든 장치로 전달되고, 각 장치는 목적지가 자신의 주소가 아닌 패킷은 모두 버립니다. 그렇지만 장치를 난잡 모드(promiscuous mode)로 설정하면 자신에게 오지 않은 패킷도 모두 받아들입니다. - Tcpdump 는 Wireshark 와 비슷한 Linux에서 사용하는 패킷 캡쳐툴 입니다. 명령어에 대한 ..
[0x432-0x433] [보충] TCP 3-Way-HandShake 란? In telecommunications, a handshake is an automated process of negotiation between two participants through the exchange of information that establishes the protocols of a communication link at the start of the communication, before full communication begins. The handshaking process usually takes place in order to establish rules for communication when a ..
[0x433][보충] TCP HEADER CheckSum 구하기 - Pesudo Header - TCP Header에 오류가 있는지 없는지 검사하기 위해서는 "Pesudo Header" 를 생성해야 합니다. 직역하면 가짜 헤더입니다. TCH Header의 오류검사를 위해, 필요에 의해 생성하는 헤더입니다. - Pesudo Header 의 구조는 아래와 같습니다. ㅇ Source Address ( 32 bits ) - IP Header의 값을 참조하여 만들어지며, 출발지 IP 주소값을 가집니다. ㅇ Destination Address ( 21 bits ) - IP Header의 값을 참조하여 만들어지며, 목적지 IP 주소값을 가집니다. ㅇ Reserved ( 8 bits ) - 말그대로 예약된 필드이며, ..
[0x433] [보충] TCP HEADER Urgent Pointer - Urgent Pointer 는 TCP HEADER URG Flag 가 1일때, 데이터 필드에서 어디까지가 긴급 데이터 인지 알려주는 포인터 입니다. URG가 설정된 경우 Urgent Pointer는 마지막 긴급 데이터 를 가리킵니다. Given the above issues and potential interoperability issues with respect to the currently common default mode operation, it is strongly recommended that applications do not employ urgent indications. RFC 6093에서 명시됐듯이, 긴급 지시자 ..