Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/stack-o

This commit is contained in:
Translator 2024-04-01 23:13:07 +00:00
parent cb92e6975e
commit 3b5a5a38d4

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>htARTE (HackTricks AWS Red Team 전문가)</strong>를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!</summary>
<summary><strong>htARTE (HackTricks AWS Red Team 전문가)</strong>에서 **제로부터 AWS 해킹 배우기**!</summary>
다른 HackTricks 지원 방법:
- **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks 다운로드**하면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
- **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
- [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
- 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
- **HackTricks****HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
- **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
- **HackTricks****HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 요령을 공유**하세요.
</details>
## 기본 정보
**Ret2win** 도전 과제는 **바이너리 공격**을 포함하는 **Capture The Flag (CTF)** 대회에서 인기 있는 카테고리입니다. 목표는 주어진 바이너리의 취약점을 이용하여 바이너리 내에서 특정한 호출되지 않은 함수를 실행하는 것입니다. 이 함수는 일반적으로 `win`, `ret2win` 등으로 명명되며 실행되면 일반적으로 플래그나 성공 메시지를 출력합니다. 도전 과제는 일반적으로 **스택**의 **리턴 어드레스**를 덮어쓰고 실행 흐름을 원하는 함수로 전환하는 것을 포함합니다. 예시를 통해 더 자세히 설명하겠습니다:
**Ret2win** 도전 과제는 **바이너리 공격**을 포함하는 **Capture The Flag (CTF)** 대회에서 인기 있는 카테고리입니다. 목표는 주어진 바이너리에서 취약점을 악용하여 특정하지 않은 함수를 실행하는 것입니다. 이 함수는 일반적으로 `win`, `ret2win` 등으로 명명되며 실행되면 일반적으로 플래그 또는 성공 메시지를 출력합니다. 도전 과제는 일반적으로 **스택의 반환 주소**를 덮어쓰고 실행 흐름을 원하는 함수로 전환하는 것을 포함합니다. 예시를 통해 더 자세히 설명하겠습니다:
### C 예시
@ -51,7 +51,7 @@ gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
### Pwntools를 사용한 Python Exploit
해킹에는 **pwntools**를 사용할 것이며, 이는 해킹을 위한 강력한 CTF 프레임워크입니다. Exploit 스크립트는 버퍼 오버플로우를 유발하고 반환 주소를 `win` 함수의 주소로 덮어씁니다.
해킹에는 **pwntools**를 사용할 것이며, 이는 해킹 강력한 CTF 프레임워크입니다. Exploit 스크립트는 버퍼 오버플로우를 유발하고 반환 주소를 `win` 함수의 주소로 덮어씁니다.
```python
from pwn import *
@ -71,33 +71,34 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
`win` 함수의 주소를 찾으려면 **gdb**, **objdump**, 또는 이진 파일을 검사할 수 있는 다른 도구를 사용할 수 있습니다. 예를 들어, `objdump`를 사용하여 다음과 같이 할 수 있습니다:
`win` 함수의 주소를 찾으려면 **gdb**, **objdump** 또는 이진 파일을 검사할 수 있는 다른 도구를 사용할 수 있습니다. 예를 들어 `objdump`를 사용하여 다음과 같이 할 수 있습니다:
```sh
objdump -d vulnerable | grep win
```
이 명령은 `win` 함수의 어셈블리를 보여주며 시작 주소를 포함합니다.
Python 스크립트는 `vulnerable_function`에서 처리될 때 조심스럽게 만들어진 메시지를 보내어 버퍼 오버플로우를 발생시키고 스택의 반환 주소를 `win`의 주소로 덮어씁니다. `vulnerable_function`이 반환할 때 `main`으로 돌아가거나 종료하는 대신에 `win`으로 이동하고 메시지가 출력됩니다.
Python 스크립트는 `vulnerable_function`에서 처리될 때 조심스럽게 만들어진 메시지를 보내어 버퍼 오버플로우시키고 스택의 반환 주소를 `win`의 주소로 덮어씁니다. `vulnerable_function`이 반환할 때 `main`으로 반환하거나 종료하는 대신 `win`으로 이동하고 메시지가 출력됩니다.
## 보호 기능
* [**ASLR**](../common-binary-protections-and-bypasses/aslr/)은 실행마다 신뢰할 수 있는 주소를 얻기 위해 **비활성화**되어야 합니다. 그렇지 않으면 함수가 저장될 주소가 항상 같지 않을 수 있으며 win 함수가 로드된 위치를 파악하기 위해 일종의 leak이 필요할 것입니다.
* [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/)도 비활성화되어야 합니다. 그렇지 않으면 손상된 EIP 반환 주소가 결코 따라지지 않을 것입니다.
* [**ASLR**](../common-binary-protections-and-bypasses/aslr/)은 **비활성화되어야** 주소가 실행마다 신뢰할 수 있게 되거나 함수가 저장될 주소가 항상 같지 않아서 win 함수가 로드된 위치를 알아내기 위해 유출이 필요합니다.
* [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/)도 비활성화되어야 하며, 손상된 EIP 반환 주소가 결코 따라가지 않을 것입니다.
## 다른 예제 및 참고 자료
* [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win)
* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**</summary>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 제로부터 AWS 해킹을 전문가로 배우세요</summary>
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 PDF로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** 트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**팔로우하세요.**
* **HackTricks****HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 **해킹 트릭을 공유하세요**.
* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**팔로우**하세요.
* **HackTricks 및 HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
</details>