#Tip

· #Tip
The heap. 1.About heap. 일단 힙(Heap)이란 스택과는 달리 사용자가 직접 관리하는 메모리 영역.Ex)int* a; // stack에 저장.a = (int *)malloc(sizeof(int) * 10); //heap에 저장.위 코드에서 int형 포인터 변수 a를 선언했고, 이건 일반적인 포인터형 변수이다. 따라서 stack 영역에 저장된다.다음줄의 malloc()함수는 힙 영역에 int형(4byte) 10개의 공간만큼을 할당.그 영역에 대한 주소값을 리턴한다. 이 리턴값을 a라는 변수에 저장한다. -----------------------------------------------| | || a < = 4 * 10(40bytes) | | | | 대략적으로 이런 모양이다. 중요한 것은..
· #Tip
PLT and GOT PLT=Procedure Linkage Table.==> 외부 프로시저를 연결해주는 테이블이고 PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다.GOT=Global Offset Table.==> PLT가 참고하는 테이블, 프로시저들의 주소가 들어있다. 흔히 PLT & GOT는 "함수를 호출하면(PLT를 호출하면) GOT으로 점프하는데 GOT에는 함수의 실제 주소가 쓰여있다.첫번째 호출이라면 GOT는 함수의 주소를 가지고 있지 않고 과정을 거쳐 주소를 알아낸다.두번째 호출부터는 첫 번째 호출 때 알아낸 주소로 바로 점프한다. 1.PLT와 GOT가 왜 필요가 있는 건가?2.함수의 주소로 바로 점프를 왜 안할까?3.PLT와 GOT가 왜 필요가 있는 건가?4.GOT가 ..
· #Tip
Function Prologue Epilogue. A.함수의 호출. 1.함수 호출은 간단히 말해 이런 식.2.함수가 사용한 파라메터를 스택에 넣고, 함수 시작 지점으로 함수 호출.3.함수 내에서 사용할 스택 프레임을 설정 = 프롤로그.4.함수 내용 수행.5.수행을 마치고 처음 호출한 지점으로 돌아가기 위해 스택을 복원 = 에필로그.즉 호출한 지점의 다음 라인으로 점프.이 때 3번 과정을 프롤로그, 5번 과정을 에필로그라고 한다.둘 다 스택 프레임 설정과 복원에 관계 있다. B. 함수 호출 규약. 프롤로그와 에필로그는 함수 호출 규약 = 콜링 컨벤션에 따라 조금 다르다. Ex) -CDECL.1. 스택에 파라미터 삽입 순서 : 왼쪽 => 오른쪽.2. 스택의 정리를 호출한 함수(Caller)에서 수행. 즉 가..
· #Tip
기본적으로 알아야 할 Gdb의 기본적인 사용법을 알아보겠다.여러 기본 명령어가 있지만, 사용하면서 기본적으로 알아야 할 명령어들이다. 1. gdb -q [binary] ==> gdb가 소리 안내고 켜지게 한다. ======> 아래 캡쳐를 보면 gdb를 통해 test 라는 파일을 디버깅할 때 -q 옵션의 유무에 따라 차이가 나타난다. 2.run or r ==> 바이너리를 실행한다.=====> gdb로 파일을 여는 명령인 r 옵션. 3.about breakpoint브레이크 포인트란 gdb와 같은 디버거가 프로그램을 실행시킬 때 브레이크 포인트를만나면 프로그램의 흐름이 일시적으로 멈추게되고, 브레이크 포인트 전까지만프로그램을 실행시키게 된다.즉 브레이크 포인트를 어디에 거느냐에 따라 결과도 당연히 달라진다.3..
· #Tip
Windows에서 VMware의 Ubuntu에 SSH로 접속하는 법을 알아보겠다. 위 화면이 기본 화면이다.우선 우분투에 SSH가 깔려 있는지 확인해본다. sudo dpkg -l | grep ssh 아니면 ssh 리스너가 존재하는 지 확인해봐야 된다. sudo netstat -lntp 안 보일수도 있어서 캡쳐 크기를 크게 했다.이 노트북은 현재 ssh패키지도 설치 안 되어 있고, ssh가 안 깔려 있어서 22포트에 리스너가 없는 상태. 아래의 명령어를 써서 ssh를 설치. 그 후 다시 패키지 확인.sudo apt-get install sshsudo dpkg -l | grep ssh openssh-server, ssh, ssh-import-id 즉 3개의 패키지가 추가로 설치되어 있는 것을 확인 할 수 있..
· #Tip
LiveOverFlow part 4. 출처. https://www.youtube.com/watchv=6jSKldt7Eqs&list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN&index=5 part 4는 CPU가 어떻게 작동을 하는지, 그리고 어셈블리어에 대한 소개. CPU Registers, 산술적인 소개, 움직임, 등 CPU에 대해 전반적인 설명을 하고 있고, 스택에서의 PUSH and POP이 나와있다. IP = introduction Pointer. pc = program counter.Sp, Esp, Rsp =Stack pointer. 이렇게 직접 자세하게 설명해준다. 솔직히 놀랐다... 캐시 및 메모리 언급도 해주고, 공유된 캐시의 멀티 코어 시스템에서도 언급. 이런 식으로 ..
· #Tip
LiveOverFlow part 2. 출처.https://www.youtube.com/watchv=JGoUaCmMNpE&index=3&list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN part 2는 한마디로 C언어에 대한 내용. 간단히 소개하되, 다 해석하지는 않겠다. part2는 vim editor을 설치 방법, 경로 환경 변수, 명령 행에서의 변수들. gcc를 이용한 C 프로그램 컴파일 내용. PATH는 즉, 경로는 파일의 위치를 알려주는 주소. 다시 말해 파일의 위치를 알려주는 문장.인터넷으로 비유하자면 URL에 해당. 경로는 루트 디렉터리로부터 적으며, 각 디렉터리는 /기호로 구분.CF) .는 자신을 ..는 부모 디렉터리를 뜻. Env는 unix계열 운영 체제용 쉘 명령어. ..
· #Tip
LiveOverFlow part 0. 출처https://www.youtube.com/watchv=iyAyN3GFM7A&index=1&list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN 아는 사람들이야 많겠지만, 정말 많이 도움될 거 같아서 소개해본다. Youtube에 비록 영어지만, LiveOverFlow Binary Hacking이란 것을 알게 되어서 보게 되었다.영어라서 좀 난감하긴 했지만, 정말 많은 내용들을 쉽게 설명해놔서 동영상을 보게 되었다. part 0은, 즉 bin0x00은 Channel introduction and Backstory 라고 해서 Hacking에 관한 전반적인 의미랑, CTF, Overflow 등을 소개하고 있다.아무래도 1강이라고 하기에는, 워낙 내용이..
Allblackk
'#Tip' 카테고리의 글 목록 (6 Page)