[Pwnable] Lazenca - ROP(x64) 정리
2021. 3. 30. 01:35
Hacking/Pwnable
Return Oriented Programming(ROP) -x64 ROP( Return-oriented programming )는 공격자가 실행 공간 보호(NXbit) 및 코드 서명(Code signing)과 같은 보안 방어가있는 상태에서 코드를 실행할 수있게 해주는 기술이다. RTL + Gadgets 이 기법에서 공격자는 프로그램의 흐름을 변경하기 위해 Stack Overflow 취약성이 필요하고, "가젯(Gadgets)"이라고 하는 해당 프로그램이 사용하는 메모리에 이미 있는 기계 명령어가 필요하다. 각 가젯은 일반적으로 반환 명령어(ret)로 끝이나며, 기존 프로그램 또는 공유 라이브러리 코드 내의 서브 루틴에 있다. Gadgets - POP; POP; POP; RET x86의 경우 pop 명령어..
[Pwnable] Lazenca - ROP(x86) 정리
2021. 3. 29. 19:23
Hacking/Pwnable
Return Oriented Programming(ROP) -x86 ROP( Return-oriented programming )란? 공격자가 실행 공간 보호(NXbit) 및 코드 서명(Code signing)과 같은 보안 방어가있는 상태에서 코드를 실행할 수있게 해주는 기술이다. RTL + Gadgets 이 기법에서 공격자는 프로그램의 흐름을 변경하기 위해 Stack Overflow 취약성이 필요하고, "가젯(Gadgets)"이라고 하는 해당 프로그램이 사용하는 메모리에 이미 있는 기계 명령어가 필요하다. Gadgets - POP; POP; POP; RET ROP는 기본적으로 RTL 기법을 이용하며, 공격자는 RTL과 Gadgets을 이용해 공격에 필요한 코드를 프로그래밍 하는 것이다. 01.RTL(R..
[Pwnable] Lazenca - RTL(x64) 정리
2021. 3. 21. 01:49
Hacking/Pwnable
RTL(Return to Libc) RTL이란 Return address 영역에 공유 라이브러리 함수의 주소로 변경해, 해당 함수를 호출하는 방식이다. 해당 기법을 이용해 NX bit(DEP)를 우회할 수 있다. 이번엔 x64에서 RTL을 실습해볼 것이다. x86과 x64 차이는 쉽게 말해 x86은 32비트, x64는 64비트인것으로 구분을 하면 된다. 그렇다면 이번에도 먼저 함수 호출 규약에 대해 공부해보자! Calling Convention System V AMD64 ABI Solaris, Linux, FreeBSD, macOS 에서 "System V AMD64 ABI" 호출 규약을 사용하기 때문이다. Unix, Unix 계열 운영체제의 표준이라고 할 수 있다. Calling convention fe..
[Pwnable] Lazenca - RTL(x86) 정리
2021. 3. 20. 21:48
Hacking/Pwnable
RTL(Return to Library) RTL이란 Return address 영역에 공유 라이브러리 함수의 주소로 변경해, 해당 함수를 호출하는 방식이다. 해당 기법을 이용해 NX bit(DEP)를 우회 할 수 있다. RTL 이해하기 위해 잠깐 Calling Convention을 공부하고 가자! Calling Convention Cdecl(C declaration) 해당 호출 규약(Calling Convention)은 인텔 x86 기반 시스템의 C/C ++ 에서 사용되는 경우가 많다. 기본적으로 Linux kernel에서는 Cdecl 호출 규약(Calling Convention)을 사용한다. Calling convention features 인자 전달 방법 Stack을 이용 인자 전달 순서 오른쪽에서 ..