چالش Whishing well¶
اگه رایتاپ قبلی رو خوب خونده باشین، میدونید که اولین کار در مواجه با یه فایل apk، بازکردنش تو JadX هست
پس سر این فایل هم همین بلا رو میاریم =))
مجددا از روی AndroidManifest.xml پکیجنیم برنامه رو پیدا میکنیم و میریم تو کلاسش سرک بکشیم
MainActivity که کار خاصی انجام نمیده و صرفا تابع publishWish رو با یه ورودی که از کاربر گرفته اجرا میکنه
و اما کلاس PubSub
این کلاس همونطور که از اسمش هم پیداست، وظیفه publish-subscribe رو داره
خیلی خلاصه بخوام بگم، PubSub یه خدمتیه برای انتقال یه پیام بین دیوایس ها به واسته گوگل هست
بعضی از نوتیفیکیشن ها هم از همین طریق ارسال میشن و مباحثی مثل تاپیک بندی و ... هم توشون وجود داره
اگه میخواید درباره pub/sub بیشتر بخونید، رو این لینک کلیک کنید
بریم سراغ ادامه چالش
گوگل برای api call زدن به سرویساش (ماشالله چقدر هم زیادن و خدا بیشترش کنه) یه ابزار cli ساخته به اسم gcloud که خیلی کار ما رو راحت میکنه
قبل از این که برم سراغش به اینم اشاره کنم که همونطور که تو عکس هم مشخصه، یه فایل key.json هم وجود داره که برا api call ها نیازش داریم و میریم از تو فولدر assets برشمیداریم
{
"type": "service_account",
"project_id": "bsides-sf-ctf-2023",
"private_key_id": "ca50571bf6de0a614a66ede75f325969cc425308",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDUjDLTA2b2iX1u\n5wYUJRv145yYtFNrwM0gCWuFXUNt99d/aZTU965U8W0OFQF1P82pCGHcOWiSDJCk\nyup+1bLG40n51jqBAk4UzUS2fQt9YvWK0QKjAJ3mOnDKs8BKcrUIAI1yEUgN3Ygj\ns92HZd15XegN+PtOfDVr+Fds+xsf0vnVUjJRJTLglyOLc4a0GepprdxEnjxugTJY\nHGCN0yB6I1Cc5tkNnwo4+DWxcsuNjm3zjmR9oa5+032CuV/uPED7KoeQ+4ZP6Ics\nRmmIeOH+aZ2niIG1I6e+lzK0WIpCHI/1SLwEa65OTMdubVmUIgDAQKahV2jx3P6h\nCuRbe9dzAgMBAAECggEAPVTjSY5+xH8yCbFySJfYtKBkTJAkTkCJMEhnlUkvLulI\nbsSppLZ/wJUV0e1vyUSK9M6tZl3Ode5YQqUm+0hw2QE3FHej1Bw1Kb19qWb1zM2k\natUa/Kwt5ARTDbrGrvTglhmKtzKTZyTYpuy87NgRC3d0gaup4KDozWoQ2CqxTgIN\nXCi/6TmLX4jLUQAf0eTiiKrAJCZXiOVLxJ1nrzZIX9GujD1ihcKvhVpoRQOK4dMG\n+TZirz7qqNXFrdV/Q31XdP2rSpOoKUUNSYYGDHicGSJxyt93igxawscIPSk3clBx\nVC2gLTmAKYD0mS9icLOhcTYp0R76/9wy19iHeA1jMQKBgQDubxAklGVUH7SOKggL\nsUXTDbZpC6HrcYuW+uPF/RJuocgnSd6bYIZUbbVRQfmltzVDvcGovZc4uKlCesMV\nOVPTo9RJjXg4RH8iuPQk1lJsfAfjrOrfbrXL/9kdJrqn0n3cxF2uwoKU0k8dEw9r\nBBiqOi/q1oxl5QRe5N/vzE5nCQKBgQDkNOnwlCi74X5iS1kxv3+8XnQdpHaus8RB\nVIOwota2LPZRkjlpLrKmcUEOb3LeNSLiRVJp4f9OiI1C0fy/aP9Kv9dvu223fGqd\n4W2JsBH0xmX27qU8dKVuRNETlnNGae+TTYXNlLwfw/dNOEP1kt1hjv3cyq/9gIuI\nwxERcIgNmwKBgGeTHWsWf5H0l+VtwsL5hgBxo3ysTfFOCLpUUF+wWLJwWtceUrIi\nUxgX9DzRMRZYqK29n4OioC9GoFg9pcLxfUWhlFVDPCcNMkEuIPhjlbiEhJTVh835\ndMWiZXkxWsIOQRiGwL9qxXjKhw11Oyxcwi4oSqpz+tdEjgp+1/x+PsypAoGAO1sf\n9fkzVxrhmoNqoavjd4VBwmwCipIrW6q1zf2sxxmOv8y+rgL9aJlQiIaoY++CMURC\nmVO06iJOS7D+gnK25CRdzqv7b5wmxwXZTdTD9tybrMyJod3dIX84ulWJiikHrVKe\nmMg03jZEXoth8b/PYQ6mLQVzHQaQRHQoPlb8rD0CgYBIVU23/bcYoS7kRo8utxDy\nWraoJvBXUQ6g9jGN4yX4IuRIsHcsvEQHI+cW0m1lNMLycKq5lQYra6ZuZL4KVbyn\nKcOOP6qownLnx0hPgbAHDTyD3kSSnvlaTWrnSAuoy/exrMrZ9LPVXVgTz/uwa/Zj\n3I3W/S3b2d8WQomqCbs6Sg==\n-----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "118295537994451394759",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/wishing-well-pubsub%40bsides-sf-ctf-2023.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}
بعد از نصب ابزار gcloud میریم که فایل key.json رو بهش بدیم
gcloud auth activate-service-account --key-file=key.json
بعد نوبت به api call هامون میرسه
من خیلی دوست داشتم یه جایی میبود که میتونستم تمام scope هایی که این کردنشیال بهشون دسترسی داره رو پیدا کنم اما خو نشد و خود این که (بفهمی به کجا دسترسی داری) هم یه دسترسی خاص داشت که این دسترسی به اکانت داده نشده بود =))))
پس در قدم اول یه پیام پوش کردیم سمت PubSub که بفهمیم همه چی اوکیه
$ gcloud pubsub topics publish wishing-well --message=flag --project=bsides-sf-ctf-2023
messageIds:
- '11008165207535342'
همه چی درسته
حالا اما فلگ کجاست، از اینجا به بعد، چلنج خیلی guessy (حدسی) میشه و شما باید از غیب بفهمید که با همین کردنشیال، میتونید پیام ها رو بخونید و با این دستور، فلگ رو دریافت کنید
gcloud pubsub subscriptions pull wishing-well-sub --project=bsides-sf-ctf-2023
میدونم خیلی سوال دارید
منم خیلی سوال داشتم اما کسی نبود ازش بپرسم
به هر حال بعد از زدن دستور، فلگ رو در چنین قالبی به ما نشون میده
┌────────────────────────────────────────────────────────┬───────────────────┬──────────────┬────────────┬──────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DATA │ MESSAGE_ID │ ORDERING_KEY │ ATTRIBUTES │ DELIVERY_ATTEMPT │ ACK_ID │
├────────────────────────────────────────────────────────┼───────────────────┼──────────────┼────────────┼──────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"data": {"message": "CTF{W1sh3s-publish3d-gr4nt3d}"}} │ 11104663640891080 │ │ │ │ BhYsXUZIUTcZCGhRDk9eIz81IChFEgEIFAV8fXdbS3VdXn1oUQ0Zcn1gfTxeRQJTR1F6DVEfC2JcTkQHSf3MpvxXV0tbEgACQVV4XF0fDWBVXXUPUSWew4fWtuPUMBs-faOri9otLcz_opY1ZiI9XxJLLD5-KTBFQV5AEkwiBURJUytDCypYEU4EISE-MD5FU0RQ │
└────────────────────────────────────────────────────────┴───────────────────┴──────────────┴────────────┴──────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
FLAG 
CTF{W1sh3s-publish3d-gr4nt3d}
نویسنده