기본개념 22

상황별 어셈블리 명령어의 사용 (익숙해지면 편함)

3. 상황별 어셈블리 명령어 http://sarghis.com/blog/357/ 어셈블리 명령어에 대한 이해를 돕기 위해서 상황별로 어떻게 사용되는지 정리하도록 하자. 데이터 이동 어셈블리에서 데이터를 옮기는 방법은 MOV 명령어를 사용하면 된다. MOV [복사될 곳], [읽어들일 곳] MOV EAX, EBX의 경우 EBX 레지스터를 EAX에 대입하는 것이다. MOV EAX, [EBX]로 표현되어 있는 경우에는 EBX가 가리키는 값을 EAX에 대입한다. MOV EAX, [EBP + 10]의 경우 EBP의 주소에서 10만큼 증가한 주소지의 값을 EAX로 대입한다. MOV EAX, [EBP – 10]의 경우 EBP의 주소에서 10만큼 감소한 주소지의 값을 EAX로 대입한다. [EBP + 10]과 [EBP –..

기본개념 2020.01.15

[ROP] Ret2ZP on ARM (like RTL on x86)

RTL은 ROP 기법중 하나로 간단한 버전이라고 생각하면된다. RTL이란? Ret2LibC Overwrites the return address and pass parameters to vulnerable function. What does it mean for (non-executable-stack) exploitation? Parameters needed to be setup instead of just putting them in the right order on the stack like you were used to on X86. Meaning you can control the Base Pointer (can be used for Frame faking), the function to call..

기본개념 2020.01.05

[펌] ARM / x86 에서의 함수 호출 /리턴방식 비교

작성자 : 박진범 메일 : jinb.park7@gmail.com http://blog.daum.net/_blog/ProfileView.do?blogid=0YW8F&totalcnt=152 :) Goal - ARM / x86 의 함수 호출, 함수 리턴 할 때의 차이점에 대해 이해한다. - 그러한 차이점이, 왜 ARM 에서 ROP 공격을 더 어렵게 만드는지 (x86 에 비해) 이해한다. :) ARM / x86 에서의 함수 호출 방식 비교 - x86 - 명령어 : call - 동작방식 : call 명령어 하나가 실행될 때, 내부적으로 아래와 같이 수행된다. (1) push return address to stack. (stack pointer) (2) mov dest, (%rip) - 즉, 돌아올 return ..

기본개념 2020.01.01

StackFrame

출처: https://securely.tistory.com/entry/NO13-Stack-Frame과-변수-공간-확보에-대해 [Securely의 정보보안블로그] Stack Frame을 사용하는 경우 함수는 항상 Frame Pointer를 셋업하는 코드 구문으로 시작하게 됩니다. Stack Frame? 1. 함수가 사용하게 되는 Stack영역 입니다. 2. 실행 중인 함수는 자신 만의 Stack영역을 사용하게 됩니다. 3. 함수가 실행하게 되면 Stack Frame을 오픈하게 되고, 함수가 종료하게 되면 Stack Frame을 닫게 됩니 일반적인 셋업코드구문을 보겠습니다. x86 PUSH EBP => caller의 Stack Frame Pointer를 백업합니다. MOV EBP, ESP => ESP값을 E..

기본개념 2020.01.01