hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md

136 lines
7.4 KiB
Markdown
Raw Normal View History

2024-02-10 21:30:13 +00:00
# Google CTF 2018 - 게임을 해볼까요?
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-02-03 01:15:34 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](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)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 21:30:13 +00:00
APK를 여기에서 다운로드하세요:
2024-02-10 21:30:13 +00:00
APK가 어떻게 작동하는지 확인하기 위해 APK를 [https://appetize.io/](https://appetize.io) (무료 계정)에 업로드할 것입니다:
2022-12-24 19:34:46 +00:00
![](<../../.gitbook/assets/image (46).png>)
2024-02-10 21:30:13 +00:00
플래그를 얻으려면 1000000번 이기셔야 합니다.
2024-02-10 21:30:13 +00:00
[Android 앱 펜테스팅](./)의 단계를 따라 애플리케이션을 디컴파일하여 smali 코드를 얻고, jadx를 사용하여 Java 코드를 읽을 수 있습니다.
2024-02-10 21:30:13 +00:00
Java 코드를 읽어보면:
2022-12-24 19:34:46 +00:00
![](<../../.gitbook/assets/image (47).png>)
2024-02-10 21:30:13 +00:00
플래그를 출력할 함수는 **m()**인 것 같습니다.
2024-02-10 21:30:13 +00:00
## **Smali 변경**
2024-02-10 21:30:13 +00:00
### **첫 번째로 m() 호출하기**
2024-02-10 21:30:13 +00:00
변수 _this.o != 1000000_이면 애플리케이션이 m()을 호출하도록 만들기 위해 조건을 변경하세요:
```
2024-02-10 21:30:13 +00:00
if-ne v0, v9, :cond_2
```
2024-02-10 21:30:13 +00:00
/hive/hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md
# Google CTF 2018 - Shall we play a game?
## Introduction
In this challenge, we are given an Android application called "Shall we play a game?" and our goal is to find the flag. The application has a login screen and a game screen where we can play a game of Tic Tac Toe against the computer.
## Analyzing the APK
To start, we need to analyze the APK file of the application. We can use tools like JADX or APKTool to decompile the APK and examine its code. By analyzing the code, we can understand how the application works and look for any vulnerabilities.
## Reverse Engineering the Code
After decompiling the APK, we can start reverse engineering the code. We can look for interesting functions, API calls, or any other clues that might help us find the flag. It's important to understand the logic of the application and how it handles user input.
## Finding the Flag
In this challenge, the flag is stored in a file called "flag.txt" in the assets folder of the APK. We can use tools like JADX or APKTool to extract the file from the APK. Once we have the flag, we can submit it and complete the challenge.
## Conclusion
In this challenge, we learned how to analyze and reverse engineer an Android application to find the flag. By understanding the code and looking for vulnerabilities, we were able to extract the flag and complete the challenge.
2024-02-10 21:30:13 +00:00
---
2024-02-10 21:30:13 +00:00
# Google CTF 2018 - 게임을 해볼까요?
## 소개
이 도전에서는 "게임을 해볼까요?"라는 이름의 Android 애플리케이션을 제공받았으며, 목표는 플래그를 찾는 것입니다. 이 애플리케이션에는 로그인 화면과 컴퓨터와 대전할 수 있는 Tic Tac Toe 게임 화면이 있습니다.
## APK 분석
먼저, 애플리케이션의 APK 파일을 분석해야 합니다. JADX나 APKTool과 같은 도구를 사용하여 APK를 디컴파일하고 코드를 조사할 수 있습니다. 코드를 분석함으로써 애플리케이션이 어떻게 작동하는지 이해하고 취약점을 찾을 수 있습니다.
## 코드 역공학
APK를 디컴파일한 후, 코드를 역공학할 수 있습니다. 흥미로운 함수, API 호출 또는 플래그를 찾는 데 도움이 될 수 있는 다른 단서를 찾을 수 있습니다. 애플리케이션의 논리와 사용자 입력 처리 방식을 이해하는 것이 중요합니다.
## 플래그 찾기
이 도전에서 플래그는 APK의 assets 폴더에 있는 "flag.txt"라는 파일에 저장되어 있습니다. JADX나 APKTool과 같은 도구를 사용하여 APK에서 파일을 추출할 수 있습니다. 플래그를 얻은 후, 제출하여 도전을 완료할 수 있습니다.
## 결론
이 도전에서는 Android 애플리케이션을 분석하고 역공학하여 플래그를 찾는 방법을 배웠습니다. 코드를 이해하고 취약점을 찾음으로써 플래그를 추출하고 도전을 완료할 수 있었습니다.
```
2024-02-10 21:30:13 +00:00
if-eq v0, v9, :cond_2
```
2022-12-24 19:34:46 +00:00
![Before](<../../.gitbook/assets/image (48).png>)
2022-12-24 19:34:46 +00:00
![After](<../../.gitbook/assets/image (49).png>)
2024-02-10 21:30:13 +00:00
[Android 펜테스트](./)의 단계를 따라 APK를 다시 컴파일하고 서명하세요. 그런 다음 [https://appetize.io/](https://appetize.io)에 업로드하고 무슨 일이 일어나는지 확인해 봅시다:
2022-12-24 19:34:46 +00:00
![](<../../.gitbook/assets/image (50).png>)
2024-02-10 21:30:13 +00:00
전체 복호화 없이 플래그가 작성된 것 같습니다. 아마도 m() 함수를 1000000번 호출해야 할 것입니다.
2024-02-10 21:30:13 +00:00
이를 수행하는 **다른 방법**은 명령을 변경하지 않고 비교 명령을 변경하는 것입니다:
![](<../../.gitbook/assets/image (55).png>)
2024-02-10 21:30:13 +00:00
**또 다른 방법**은 1000000과 비교하는 대신 값을 1로 설정하여 this.o가 1과 비교되도록 하는 것입니다:
2022-09-30 10:43:59 +00:00
![](<../../.gitbook/assets/image (57).png>)
2024-02-10 21:30:13 +00:00
네 번째 방법은 v9(1000000)의 값을 v0 _(this.o)_로 이동시키는 명령을 추가하는 것입니다:
2022-09-30 10:43:59 +00:00
![](<../../.gitbook/assets/image (58).png>)
2022-09-30 10:43:59 +00:00
![](<../../.gitbook/assets/image (52).png>)
2024-02-10 21:30:13 +00:00
## 해결책
2024-02-10 21:30:13 +00:00
첫 번째로 이기면 응용 프로그램이 루프를 100000번 실행하도록 만듭니다. 이를 위해 **:goto\_6** 루프를 생성하고 응용 프로그램이 `this.o`가 100000과 같지 않으면 **거기로 이동하도록** 만들면 됩니다:
![](<../../.gitbook/assets/image (59).png>)
2024-02-10 21:30:13 +00:00
이 작업은 물리적 장치에서 수행해야 합니다. (왜인지는 모르겠지만) 에뮬레이션된 장치에서는 작동하지 않습니다.
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-02-03 01:15:34 +00:00
2024-02-10 21:30:13 +00:00
* 회사를 **HackTricks에서 광고**하거나 **PDF로 HackTricks를 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하여 여러분의 해킹 기술을 공유하세요.
2022-04-28 16:01:33 +00:00
</details>