From 88099d85e7624087702641957101849ed144f53a Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 25 Sep 2024 16:50:32 +0000 Subject: [PATCH] Translated ['binary-exploitation/rop-return-oriented-programing/ret2csu. --- .../rop-return-oriented-programing/ret2csu.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/binary-exploitation/rop-return-oriented-programing/ret2csu.md index e880230a1..bec9aa24d 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2csu.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2csu.md @@ -27,7 +27,7 @@ Learn & practice GCP Hacking:

https://www.scs.stanford.edu/brop/bittau-brop.pdf

@@ -92,12 +92,12 @@ ret2csu 가젯에서 **`rdi`** 및 **`rsi`**를 제어하는 또 다른 방법 ### 호출 사용 -syscall을 하거나 `write()`와 같은 함수를 호출하고 싶지만 `rdx` 및 `rsi` 레지스터에 특정 값이 필요하다고 가정해 보겠습니다. 일반적으로 이러한 레지스터를 직접 설정하는 가젯을 찾겠지만, 찾을 수 없습니다. +syscall을 하거나 `write()`와 같은 함수를 호출하고 싶지만 `rdx`와 `rsi` 레지스터에 특정 값이 필요하다고 가정해 보겠습니다. 일반적으로 이러한 레지스터를 직접 설정하는 가젯을 찾겠지만, 찾을 수 없습니다. 여기서 **ret2csu**가 등장합니다: 1. **레지스터 설정**: 첫 번째 매직 가젯을 사용하여 스택에서 값을 pop하여 rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), r15에 넣습니다. -2. **두 번째 가젯 사용**: 이러한 레지스터가 설정되면 두 번째 가젯을 사용합니다. 이를 통해 선택한 값을 `rdx` 및 `rsi`(각각 r14 및 r13에서)로 이동시켜 함수 호출을 위한 매개변수를 준비합니다. 또한 `r15` 및 `rbx`를 제어하여 프로그램이 계산한 주소에 있는 함수를 호출하고 `[r15 + rbx*8]`에 배치할 수 있습니다. +2. **두 번째 가젯 사용**: 이러한 레지스터가 설정되면 두 번째 가젯을 사용합니다. 이를 통해 선택한 값을 `rdx`와 `rsi`(각각 r14와 r13에서)로 이동시켜 함수 호출을 위한 매개변수를 준비합니다. 또한 `r15`와 `rbx`를 제어하여 프로그램이 계산한 주소에 있는 함수를 호출하도록 할 수 있습니다. 이 주소는 `[r15 + rbx*8]`에 배치됩니다. 이 기술을 사용한 [**예제와 설명이 여기에 있습니다**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), 그리고 이것이 사용된 최종 익스플로잇입니다: ```python