Home
System Hacking
🎞️

slutter

Type
CTF
년도
2025
Name
Nowruz 1404
분야
Rev
세부분야
Flutter
2025/03/20 04:32
1 more property

# Description

What do you do if you encounter Flutter on Linux?
Plain Text
복사

# 분석

slutter.zip 파일을 다운로드 받을 수 있다.
해당 파일을 다운로드 받아 압축을 풀어보면 아래와 같은 파일 구조를 확인할 수 있다.
./ ├── data │ ├── flutter_assets │ │ ├── AssetManifest.bin │ │ ├── AssetManifest.json │ │ ├── FontManifest.json │ │ ├── NOTICES.Z │ │ ├── fonts │ │ │ └── MaterialIcons-Regular.otf │ │ ├── kernel_blob.bin │ │ ├── packages │ │ │ └── cupertino_icons │ │ │ └── assets │ │ │ └── CupertinoIcons.ttf │ │ ├── shaders │ │ │ └── ink_sparkle.frag │ │ └── version.json │ └── icudtl.dat ├── lib │ └── libflutter_linux_gtk.so └── slutter
Bash
복사
slutter 파일을 확인해보면 아래와 같이 ELF 파일인 것을 알 수 있다.
file ./slutter ./slutter: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=c77dcc8e7423c8e589ceca8752cadcc937408f1d, for GNU/Linux 4.4.0, with debug_info, not stripped
Bash
복사
실행해보면 아래와 같이 0x13371337번 클릭하라고 뜬다.
클릭하면 1씩 증가하지만 계속 현실적으로 클릭을 하고 있을 수가 없다…

삽질

1.
앱이면 string으로 박혀있다고 생각했다.
→ gdb로 attach 후 memory dump후 확인해봤지만 없음
2.
linux에서 cheat engine 같은걸로 memory value 변조
→ memory에서 검색은 되는데 변경해도 아무런 변화가 일어나지 않음

Flutter Debug Mode

Flutter가 Debug 모드에서는 컴파일을 할 때 kernel_blob.bin을 남긴다고 한다.
즉 kernel_blob.bin 파일에 소스코가 남아있다고 확인했고 우리는 앞에서 tree 명령어를 통해서 kernel_blob.bin 파일이 존재하는 것을 확인했다.

extract string

kernel_blob.bin에서 string을 추출한다.
strings kernel_blob.bin > strings.txt
Bash
복사
소스코드가 추출된다.
이제 저 문자열을 찾아본다.
Ctrl + F로 “push this button” 검색 후 위 아래를 보면 flag가 박혀있다.
if (_counter == 0x13371337) { flag = [ 70, 77, 67, 84, 70, 123, 100, 49, 68, 95, 121, 48, 117, 95, 117, 53, 51, 95, 56, 108, 117, 55, 55, 51, 82, 95, 48, 82, 95, 119, 104, 52, 55, 63, 125 ]; }
Bash
복사
웃긴점은 진짜 0x13371337번 클릭했어도 풀렸다는 것이다.
python 코드로 복호화해보면 flag를 얻을 수 있다.
[print(chr(i),end='') for i in [70, 77, 67, 84, 70, 123, 100, 49, 68, 95, 121, 48, 117, 95, 117, 53, 51, 95, 56, 108, 117, 55, 55, 51, 82, 95, 48, 82, 95, 119, 104, 52, 55, 63, 125]]
Python
복사

# Flag

FMCTF{d1D_y0u_u53_8lu773R_0R_wh47?}
Plain Text
복사

Reference