Påkemån Blå

Kategori

Misc, Rev

Beskrivning

Katastrofen är nära! Astronauten Rakel Raket, som jobbar ombord på ISS, skulle som vanligt varva ned lite genom att tillbringa eftermiddagen med att gamea lite Pokémon (Blå så klart, för Pokémon är inte Pokémon utan Meowth) på sin GameBoy, när hon upptäcker att Kenneth har lyckats ta över enheten!

Hela eftermiddagen är i fara!

Hon lyckas få ut lite data ut enheten som kanske kan avslöja vad Kenneth haft för sig i systemet. Kan du hjälpa henne?

Notera att formatet på flaggan i den här utmaningen är lite annorlunda. När du submittar flaggan ska den bara innehålla följande tecknen: [A-Z0-9()-].

Lösning

Bifogat till utmaningen är en fil innehållande assemblerkod för en GameBoy.

main:
        ld hl, .data
        jp $3C49

.data:
        db $00, $85, $8b, $80, $86, $86, $80, $8d, $7f, $80, $91, $9c, $7f, $94, $8d, $83, $94, $93, $51
        db $9a, $89, $80, $86, $e3, $80, $8b, $92, $8a, $80, $91, $e3, $86, $84, $8d, $f7, $9b, $57

Utmaningens namn hintar om att det har något att göra med Pokémon Blue. Söker vi efter Pokémon Blue disassembly kan vi hitta ett GitHub-repo som innehåller Pokémon Red och Pokémon Blue dissassemblys.

Letar man upp addressen $3C49 så ser vi att det är addressen för PrintText som skriver ut text på skärmen. Byter vi ut .data i koden, t.ex i oak_speech.asm, så kan vi ersätta texten som skrivs ut med texten i utmaningskoden.

OakSpeech:
	ld a, SFX_STOP_ALL_MUSIC
	call PlaySound
	ld a, BANK(Music_Routes2)
	ld c, a
	ld a, MUSIC_ROUTES2
	call PlayMusic
	call ClearScreen
	call LoadTextBoxTilePatterns
	call PrepareOakSpeech
	predef InitPlayerData2
	ld hl, wNumBoxItems
	ld a, POTION
	ld [wCurItem], a
	ld a, 1
	ld [wItemQuantity], a
	call AddItemToInventory
	ld a, [wDefaultMap]
	ld [wDestinationMap], a
	call PrepareForSpecialWarp
	xor a
	ldh [hTileAnimations], a
	ld a, [wStatusFlags6]
	bit BIT_DEBUG_MODE, a
	jp nz, .skipSpeech
	ld de, ProfOakPic
	lb bc, BANK(ProfOakPic), $00
	call IntroDisplayPicCenteredOrUpperRight
	call FadeInIntroPic
	ld hl, .data
	jp $3C49

.data:
	db $00, $85, $8b, $80, $86, $86, $80, $8d, $7f, $80, $91, $9c, $7f, $94, $8d, $83, $94, $93, $51
	db $9a, $89, $80, $86, $e3, $80, $8b, $92, $8a, $80, $91, $e3, $86, $84, $8d, $f7, $9b, $57

När vi gjort detta kan vi kompilera koden med RGBDS och köra den i en emulator för att få ut flaggan.

Flagga

Flaggan är: UNDUT(JAG-ALSKAR-GEN1)

n00bz

Home of the n00bz CTF team.


By n00bz, 2025-03-29