본문 바로가기

크랙

리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1) 관련 포스팅1. 리버스 엔지니어링(Reverse Engineering)이란? 2. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1)3. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(2) ■ 2진수 10진수 16진수 [리버스 엔지니어링(Reverse Engineering)이란?] 에서 컴퓨터가 0과 1로 어떻게 이루어지는지 언급한 바 있습니다. 컴퓨터에서 데이터를 표현함에 있어 0과 1로 이루어지는 이유는 전기의 흐름 또는 흐르지 않음 자기장의 N극 또는 S극(하드디스크) 다음과 같은 물리적 특성을 기반으로 데이터를 표현하기 때문입니다. 그렇다면 우리는 0과 1로 이루어진 정보를 읽을 줄 알아야만 컴퓨터 내부의 약속된 신호체계에 대해 .. 더보기
webhacking.kr [문제 5번] 문제 5번을 풀어보겠다. 300point의 5번 문제를 클릭하자. 웹 페이지가 단순하게 두개의 버튼만을 가지고 있다. 로그인 페이지가 보이고 일반적으로 UI가 상단은 아이디 하단은 비밀번호로 생각되어 아무거나 치고 로그인 해보자. 예상했던 결과다 싶이 admin이 아닐경우 로그인이 되지않는다고 한다. admin과 비밀번호를 입력한 후 로그인해보자. 이전과는 다른 메세지를 보인다. 그렇다면 한번 회원가입을 클릭해보자. Join버튼을 누른결과 접근이 거부되었다는 메세지가 뜬다. 소스코드를 확인해보자. 소스코드를 확인하여보니 Join버튼 클릭시 당연히 no()라는 함수가 실행되어 'Acess_Denied'라는 메세지 박스를 띄운다. 여기서 유의해봐야 할 점이 디렉터리의 구조이다. login버튼 클릭시 들어가지.. 더보기
범용 쉘코드(Universal Shellcode) (2) 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 이전 포스팅범용 쉘코드(Universal Shellcode) (1) 보러가기 이전 포스팅에서는 범용 쉘코드의 필요성에 대하여 포스팅하였다. 그렇다면 ASLR기술이 적용된 시스템에서는 어떠한 과정을 통해 실질적으로 우리가 필요로 하는 함수를 구할 수 있을지 학습하여 보겠다. 프로세스에서 함수의 주소값을 구하기 위해서는 함수가 저장되어져있는 dll의 시작 주소값과 dll 시작 주소부터 함수까지의 offset을 알아야한다. ① dll의 시작 주소값 구하기 대체적인 주소값 계산의 흐름은 위와 같다. FS레지스터에는 TEB의 주소가 저장되어 있다. TEB란 현재 실행되고 있는 쓰레드에 대한 정보를 담고 있는 .. 더보기
범용 쉘코드(Universal Shellcode) (1) 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 현 포스팅[범용 쉘코드(Universal Shellcode)]을 읽기에 앞서 제시된 포스팅을 읽고 오시는 것을 추천드립니다. 이전 포스팅쉘코드(Shellcode) 기초(1)쉘코드(Shellcode) 기초(2) 범용 쉘코드(Universal Shellcode)의 필요성 이전 포스팅[ 쉘코드(Shellcode) 기초(1) ]에서 작성한 쉘코드를 컴퓨터를 재부팅한 후 실행하면 어떻게 될까? 다음과 같은 에러 메세지를 확인할 수 있다. 그렇다면 다음과 같이 재부팅전에 정상작동하던 쉘코드가 어떠한 부분에서 문제가 발생하며 어떠한 이유로 정상적으로 실행이 되지 않는 것인지 짚고 넘어가야 한다. 위의 작성한 쉘코.. 더보기
쉘코드(Shellcode) 기초(2) 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 이전 포스팅쉘코드(Shellcode) 기초(1) 보러가기 쉘코드(Shellcode) 기초(1)에서의 문제점 이전 포스팅[쉘코드(Shellcode) 기초(1)]에서 작성한 쉘 바이트 코드에서는 널바이트('0x00')을 포함한다는 문제점을 지니고 있었다. 바이트 코드에서 널바이트('0x00')를 포함할 시에 문자열 복사 계열 취약점에서 발생하는 부분에서는 바이트 코드로 사용할 수 없다는 문제점(범용성)과 이로인해 널바이트 코드 이후에 쉘 바이트 코드를 복사하지않아 정상적으로 작동하지 않는다는 문제점(신뢰성)을 지니고 있다. 결론적으로 공격자(해커)는 쉘바이트 코드에서 널바이트만을 제거하여 같은 동작을 하.. 더보기
쉘코드(Shellcode) 기초(1) 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 쉘코드(Shellcode) 쉘코드란 보안 취약점이 있는(실행흐름을 악의적으로 조작할 수 있는) 프로그램에서 실행 시킬 실질적인 실행 코드를 말한다.예를들어 이는 포트를 여는 것 일 수도 있고, 악의적인 서버에 본인의 개인정보 파일을 업로드하게 하는 것 일 수 도있으며,해커가 원하는 실질적인 모든 행동을 수행하는 코드를 말한다. 보안 취약점이 있는 프로그램의 공격에 성공하여 실행흐름을 조작하여 공격자가 원하는 특정주소를 실행시킬 수 있는 데 이때 CPU는 흐름이 바뀐 메모리에서 직접 코드를 읽기에 CPU가 해석할 수 있는 기계어 코드로 이뤄져야한다. 좋은 쉘코드의 조건신뢰성 - 공격자가 원하는 행위를 .. 더보기