- vừa được xem lúc

[Write up] NaHamCon CTF 2023 - Android challenge

0 0 30

Người đăng: Tran Minh Nhat

Theo Viblo Asia

Tuần vừa rồi team mình đã tham dự Nahamcon CTF với tinh thần học hỏi là chính. Để đánh giá thì Nahamcon là một giải CTF hay, có bộ đề trải rộng nhiều mảng, số lượng đề lớn. Nếu muốn tranh giải thì một vài cá nhân khó mà chơi được, cần có một đội để chia nhau xử từng mảng mà mình giỏi nhất. Mỗi mảng thì đề đều nâng dần mức độ khó, nên bên cạnh tính thử thách thì bộ đề này có thể sử dụng để luyện tập cũng rất là ok luôn. Trong hôm thi mình chỉ tập trung làm các bài Android. Về đề Android thì mình đánh giá là hay, đặc biệt là 2 bài cuối. Tuy trong thời gian thi mình chỉ kịp giải 3/5 bài, bài cuối có hướng nhưng chưa kịp làm xong, bài số 4 thì hoàn toàn chịu =))))

Danh sách các thử thách về Android

Tên bài Độ khó Trạng thái
Fortune Teller Dễ 🆗
JNInjaspeak Dễ 🆗
Red Light Green Light Trung bình 🆗
Where's Waldo Trung bình ❌
Nahamstagram Trung bình ❌

Fotune Teller

Giao diện của bài này rất đơn giản, chỉ có hai đối tượng cần để ý là: 1 EditText và 1 Button. Dù có nhập vào cái gì đi nữa thì ứng dụng cũng chỉ hiện lên một thông báo linh tinh.

Với một ứng dụng không có nhiều chức năng như này thì chúng ta sẽ tập trung luôn vào việc decompile và phân tích dữ liệu trong tệp tin apk. Thứ tự mình thường kiểm tra là:

  • /asset
  • /values/public.xml
  • /values/strings.xml
  • /lib

Ở trong tệp tin strings.xml có một giá trị đáng ngờ tên là correct_guess

Sau khi nhập input là you win this ctf thì ứng dụng sẽ hiện ra flag.

Khi kiểm tra mã nguồn thì có thể nhận thấy tấm ảnh chứa flag đã được mã hoá từ trước, chỉ khi nhập đúng chuỗi ký tự thì ứng dụng mới giải mã tấm ảnh chứa flag.

JNInjaspeak

Giao diện của JNInjaspeak cũng tương tự Fotune Teller, chỉ có hai đối tượng cần để ý là: 1 EditText và 1 Button. Chỉ khác ở chỗ khi bấm vào nút thì ứng dụng sẽ chuyển các ký tự chúng ta nhập vào thành các ký tự khác như một mã hoá hoán vị.

Khi dịch ngược mã nguồn của ứng dụng, có thể thấy được ứng dụng đang sử dụng một thư viện riêng.

Để phân tích thư viện này thì cần decompile tệp tin apk bằng apktool. Sau khi decompile thì thư viện sẽ có trong thư mục asset hoặc thư mục lib. Trong trường hợp này thì thư viện jninjaspeak.so nằm trong thư mục lib.

Trong trường hợp không biết dịch ngược code C thì cứ strings và grep. Thao tác này cũng tương tự việc mở IDA lên dịch ngược và tìm các đoạn string mà thôi.

Red Light Green Light

Ở bài này chúng ta chỉ có một nút bấm duy nhất, nhưng khi bấm vào thì không có điều gì xảy ra ngoài một thông báo. Đọc thông báo này, có thể đoán được rằng chúng ta cần phải khống chế được logic của nút bấm để có thể lấy được flag.

Đúng như vậy, khi đọc mã nguồn dịch ngược qua Bytecode Viewer, ta thấy được ở đây chỉ kiểm tra dựa vào giá trị của biến red. Nếu có thể thay đổi giá trị của biến này thành false thì ứng dụng sẽ giải mã thông tin cho chúng ta.

Và để làm được như vậy thì có thể patch app.

Sau khi decompile ra bằng apktool thì sẽ kiểm tra trong tệp tin MainActivity.smali

Biến red đã được khai báo ở dòng 54.

Và được gán cho giá trị là true trong constructor. Như vậy để thay đổi giá trị của biến red thành false thì chỉ cần đổi const/4 v0, 0x1 thành const/4 v0, 0x0 là được.

Quá trình dựng lại tệp tin apk mới thì tương tự như ở bài viết Tìm hiểu dạng CTF Reverse Android: dịch ngược và patch file APK. Tuy nhiên có một điểm cần lưu ý nếu sau khi ký rồi và cài đặt vẫn gặp lỗi này:

Thì có thể sửa bằng theo các bước sau:

  • Tạo chữ ký bằng keytool.
  • Căn chỉnh tệp apk bằng zipalign.
  • Ký bằng apksigner (do ký bằng jarsigner có thể xuất hiện 1 số lỗi khác).

Sau khi patch thành công thì có thể lấy được flag chỉ bằng 1 click.


Trên đây là writeup cho 3 bài đầu trong mảng Android của Nahamcon CTF 2023. Riêng bài số 5 mình có ý tưởng làm ra rồi, nhưng bản thân mình thấy đó là một bài hay, ít khi xuất hiện trong các giải CTF nên mình sẽ dành riêng một bài viết để phân tích về Nahamstagram

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 213

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 101

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315