Tantangan: Solusi “Memgraph Menangkap Bendera” – Temukan

iOS

[ad_1]
Welcome Sahabat di suratpembaca.web.id. Malam ini kita akan mengupas tentang Linux yaitu Tantangan: Solusi “Memgraph Menangkap Bendera” – Temukan

.

Mudah-mudahan postingan mengenai Tantangan: Solusi “Memgraph Menangkap Bendera” – Temukan

bisa memberikan manfaat bagi Teman-teman semua. Mari baca postingan ini
sampai selesai.

Tandai simbol pada latar belakang abu-abu

Tantangan “Memgraph Capture the Flag” mengundang Anda untuk belajar dan berlatih debugging memori dan simbolisasi dengan alat baris perintah. Jika Anda belum mencoba tantangan atau tidak ingin melewatkan langkah-langkah untuk menyelesaikannya, kami sarankan Anda kembali ke halaman tantangan utama. Jika tidak, baca terus!


Tantangan: Memgraph Menangkap Bendera

Salah satu teknisi kami menyembunyikan telur Paskah di program rahasia kami. Kami membutuhkan bantuan Anda untuk menemukannya.

Tantangannya dimulai dengan yang berikut: “Salah satu teknisi kami telah menyembunyikan telur Paskah di program rahasia kami. Kami mencoba melacaknya, tetapi yang kami tahu hanyalah formatnya. flag_<unknown_string_here>@WWDC. Anda harus menggunakan alat baris perintah yang disediakan oleh macOS untuk memecahkan masalah memori, memulihkan simbol yang hilang, dan menangkap tanda jahat.

Solusi berikut adalah salah satu cara yang mungkin untuk mendapatkan bendera. Untuk memulainya, artikel tantangan memberi Anda file memgraph dan dSYM dengan tip berikut: “Memgraph adalah daftar biner khusus. “Apa yang bisa kamu temukan di propertinya?”

Gunakan untuk melihat karakteristik mammogram plutil. Dalam output, Anda akan menemukan lebih banyak tips:

$ plutil -p secret.memgraph
...
"hint" => "the flag is hiding in a memory leak"
...
"one_more_hint" => "you might also want to explore the 'symbols' in the dSYM”
...

Petunjuk mengundang Anda untuk memeriksa kebocoran memori, sementara one_more_hint Langsung Anda gunakan symbols alat CLI. Di WWDC21, “Simbolisasi: Melampaui Dasar,” Alejandro Lucena menunjukkan bahwa merupakan ide bagus untuk mendefinisikan arsitektur dengan alat ini. Dengan cara ini, Anda dapat menggunakan memgraph untuk mempelajari arsitektur program “tersembunyi”.

Anda dapat mencoba heapkan leaks Atau vmmap. Saat menggunakan Mammografi, beberapa baris pertama pada output dari masing-masing alat ini adalah sama. Inilah cara Anda mempelajari arsitektur mana yang digunakan proses “rahasia”: Code Type: X86-64.

Seperti yang dijelaskan pada sesi WWDC21 “Mendiagnosis dan Mendiagnosis Masalah Memori”, selain menargetkan proses yang sedang berjalan, Anda dapat menggunakan perintah vmmap terhadap file memgraph. Menjalankannya terhadap mammogram ini memberikan informasi berikut:

$ vmmap -summary secret.memgraph 
Process:         secret [2901]
Path:            /Users/*/secret
Load Address:    0x10d264000
Identifier:      secret
Version:         0
Code Type:       X86-64
Platform:        macOS
Parent Process:  zsh [1438]
...

Anda sekarang siap untuk menggunakannya symbols Gunakan perintah -noSources Miliki opsi untuk membatasi output yang disebut simbol ke output yang lebih kecil untuk diperiksa. Di antara simbol-simbol di dSYM “tersembunyi”, Anda akan menemukan remah lain untuk solusinya:

$ symbols -arch x86_64 -noSources secret.dSYM [macOS Monterey+, Xcode 13+]
or
$ symbols -arch x86_64 -noSources secret.dSYM/Contents/Resources/DWARF/secret [macOS before Monterey, Xcode before 13]
...
hint_find_the_secret_addresses_of_the_memory_leak
...

Memori yang bocor di mammogram ini pasti terlihat menarik – mungkin alamat bocor tertentu. Mari kita lihat alamat rahasia mana yang dimaksud. Untuk menentukan apakah program “tersembunyi” memiliki memori yang bocor atau tidak, Anda dapat menggunakan leaks Alat baris perintah

Anda harus memperhatikan bagian output ini:

$ leaks secret.memgraph
...
STACK OF 5 INSTANCES OF 'ROOT LEAK: <CFArray>':
6   hint                               0x7fff204edf3d how would you translate secret Addresses TO Symbols? + 1
5   secret                                0x10d267ee8 0x10d264000 + 16104
4   secret                                0x10d267dc5 0x10d264000 + 15813
3   secret                                0x10d267ccf 0x10d264000 + 15567
2   com.apple.CoreFoundation           0x7fff2059576f __CFArrayCreateInit + 190
1   com.apple.CoreFoundation           0x7fff2054df07 _CFRuntimeCreateInstance + 587
0   libsystem_malloc.dylib             0x7fff20314071 _malloc_zone_malloc + 242 
...

Dalam output ini, Anda akan melihat lima kebocoran, yang semuanya berasal dari lokasi yang sama dalam kode. Setiap kali a sama dengan tumpukan panggilan yang sama CFArray Dialokasikan, tetapi tidak pernah dirilis. Anda akan menemukan tiga alamat tersembunyi di sini – 0x10d267ee8kan 0x10d267dc5 Dan 0x10d267ccf – Dilengkapi dengan petunjuk olahraga baru dalam huruf besar. Petunjuk ini memberi tahu Anda apa yang harus dicoba dan digunakan atos Sebuah alat untuk melambangkan alamat tersembunyi.

kontak atos, Anda memerlukan beberapa komponen: Biner DWARF di dSYM, arsitektur dan URL untuk notasi. Namun, Anda telah kehilangan alamat unggahan, dan Anda dapat menemukannya untuk gambar biner “tersembunyi” di tumpukan panggilan bocor di sebelah ketiga alamat tersembunyi: 0x10d264000. Anda juga dapat menemukannya di deskripsi proses dan daftar gambar biner leaks Keluaran:

$ leaks secret.memgraph
Process:         secret [2901]
Path:            /Users/*/secret
Load Address:    0x10d264000
...
Binary Images:
       0x10d264000 -        0x10d267ff7 +secret (0) <6676D338-8C26-3019-B919-88C1CB4AA324> /Users//secret
...

Sekarang, Anda dapat menggunakan atos Untuk menerjemahkan alamat tersembunyi ke dalam simbol:

$ atos -o secret.dSYM/Contents/Resources/DWARF/secret -arch x86_64 -l 0x10d264000 0x10d267ee8 0x10d267dc5 0x10d267ccf
main (in secret) (main.m:226)
very_nice_function (in secret) (main.m:205)
good_job_but_the_flag_is_inlined (in secret) (main.m:186)

Anda mendekat: benderanya linier, jadi Anda harus menambahkannya -i Opsi baris perintah saat menelepon atos Untuk menampilkan fungsi sebaris juga:

$ atos -o secret.dSYM/Contents/Resources/DWARF/secret -arch x86_64 -l 0x10d264000 0x10d267ee8 0x10d267dc5 0x10d267ccf -i
main (in secret) (main.m:413)

very_nice_function (in secret) (main.m:392)

IGZsYWdfbWVNMHJ5VDBPTHNEZWJ1R0cxbmdQcjBAV1dEQyAg (in secret) (main.m:86)
whats_wrong_with_encoding (in secret) (main.m:204)
omg_you_found_it (in secret) (main.m:333)
good_job_but_the_flag_is_inlined (in secret) (main.m:373)

Bahkan lebih dekat! Jalankan perintah ini dan Anda akan mendapatkan string membingungkan yang tampaknya dienkripsi dengan basis 64. Jalankan decoder itu dan Anda akan menerima:

$ echo "IGZsYWdfbWVNMHJ5VDBPTHNEZWJ1R0cxbmdQcjBAV1dEQyAg" | base64 -d
 [email protected]  %

Sebagai tip: pastikan Anda lulus juga -arch Tandai ke atosKarena atos Standarnya adalah arsitektur yang Anda gunakan secara aktif. Misalnya, jika perintah dari x86_64 (Baik pada perangkat keras x86 atau Rosetta 2), Anda tidak akan melihat perubahan apa pun. Tetapi jika Anda menjalankan alat dari perangkat Apple Silicon tanpa itu -arch flag, Anda akan menerima string untuk arsitektur yang salah:

IOKdmuKWiOKVkOKVkOKWiOKdmiAg4p2a4paI4pWQ4pWQ4paI4p2a (in secret) (main.m:396)
IOKWhyDiloUg4paIIOKWhSDilocg4paCIOKWgyDiloEg4paB (in secret) (main.m:381)

Konversikan dari pengkodean base64 Anda, dan Anda akan menerima bobot seni ASCII yang indah.

❚█══█❚ ❚█══█❚

▇ ▅ █ ▅ ▇ ▂ ▃ ▁ ▁

Meskipun ini mungkin berguna untuk mengisi cincin kebugaran di Apple Watch Anda, Anda membutuhkannya. -arch x86_64 Parameter untuk mendapatkan bendera khusus ini.

Catatan terakhir: Secret.memgraph dibuat saat proses “rahasia” sedang berjalan MallocStackLogging Diaktifkan ini memungkinkan Anda melihat back-stack kebocoran. Jangan lupa aktifkan MallocStackLogging Untuk program Anda sendiri saat memproduksi mamografi. Ini dapat dilakukan dalam pengaturan tata letak Xcode (Jalankan> Deteksi> MallocStackLogging = alokasi langsung saja) atau dengan variabel lingkungan saat memulai dari terminal:

`$ MallocStackLogging=lite <command>`

Ini hanyalah satu rute yang dapat Anda ambil untuk mendapatkan tanda menggunakan alat baris perintah tertanam macOS untuk debugging dan simbolisasi memori. Lihat repositori lengkap tantangan pemrograman dan desain untuk pemrograman menyenangkan dan eksplorasi desain lainnya, atau lakukan debugging lebih dalam dengan video WWDC21 terbaru kami.

Sumber


Simbol: Di luar dasar-dasar

Temukan bagaimana Anda dapat memaksimalkan kinerja dan debugging yang akurat dengan program Anda. Simbolisme adalah inti dari alat seperti Instrumen dan LLDB untuk membantu menjembatani lapisan antara runtime aplikasi dan kode sumber Anda. Pelajari bagaimana proses ini bekerja dan langkah-langkah yang dapat Anda ambil …


Mengidentifikasi dan mendiagnosis masalah memori

Temukan bagaimana Anda dapat mendiagnosis masalah kinerja memori dengan Xcode. Kami akan memperkenalkan Anda pada pembaruan terbaru alat Xcode, menjelajahi metrik, menjelajahi fitur Koleksi Memgraph di XCTest, dan mempelajari cara menangkap regresi menggunakan Kinerja XCTest.

Jelajahi lebih banyak tantangan pengkodean dan desain

Itu tadi materi tentang Tantangan: Solusi “Memgraph Menangkap Bendera” – Temukan

, terimakasih telah berkunjung di website saya, semoga informasinya ada manfaatnya ya.

[ad_2]

Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.