Yeet another unsolved challenge.
428 words • 3 minutes to read
HCMUS-CTF::Nyanko
Posted on
https://nyanko.blackpinker.com/ (unsolved)
Prelude
This challenge is related to a game, with transfer code and confirmation exist as terms in the game.
Recon
After inspecting pretty thoroughly, nothing comes up, so I’ve resorted to bruteforcing the form.
Bruteforcing
Trying several combinations (the former is transfer code and the latter is confirmation code).
adasfa456464-aaaaaaaaa444:Error: Invalid code format,~57msadasfa456464-aaaaaaaaa4:Error: Failed to download save data.,~293ms
So it does validation under the hood, and based on that 293ms of the latter request, I could assume that it does forward the request to another service as hashing is kinda impractical here yk. And the validation doesn’t even conform to 1, so we literally got little useful result here.
Using valid codes
The hint mentions using real codes, so what if we use valid codes according to 1?
As we could never find these codes online so I gotta download the game myself to get them…
After inputting the codes grabbed from the game, it says You don't have the Cheetah cat unlocked. Go hack your game and come back!.
Generating codes
Based on the video, as well as the message above, we got a clue in the description, mentioning Cheetah Cat along with a wiki URL. The wiki says its unobtainable, and the only method is hacking?
After a quick research, I’ve found this repo as a game file saver; speaking frankly, its a hacking tool, for manipulating game data, similar to the “hacking” method aforementioned. This library exposes a TUI and Python APIs, I would prefer the latter.
Experimentation with BCSFE
So BSCFE does support generating codes outta nowhere, here’s a simple script to do so with Cheetah Cat unlocked.
from bcsfe import core
core.set_config_path(core.Path("./config.yaml"))core.set_log_path(core.Path("./bcsfe.log"))core.core_data.init_data()
save = core.SaveFile(cc=core.CountryCode("en"), gv=core.GameVersion(150300))
pb = core.NyankoPictureBook(save)assert pb.cats
save.cats = core.Cats([core.Cat.init(d.cat_id) for d in pb.cats])
cheetah = save.cats.get_cat_by_id(673)assert cheetah
cheetah.unlocked = 1cheetah.gatya_seen = 1cheetah.catguide_collected = True
handler = core.ServerHandler(save)assert handler.create_new_account()
assert (codes := handler.get_codes())
print(*codes)Now it says You have the Cheetah cat, but it needs a speed boost... Cheetahs are fast, right?. However, according to the wiki, its movement speed is 0. So what’s “Speed” here refers to?
Speed?
Speed-up item
Doesn’t work.
Talent
Cheetah doesn’t have any talents.
Cat Combo?
The wiki says Unit Speed Up: Active units have faster movement.. And there are 16 combos with that effect, most of which are Sm, some are M, and one XL (though exclusive to Cat Rangers). I’ll pick an arbitrary one, Hecks Angels in this case. This combo consists of 158 and 017. But since this is multiplicative speed instead of additive, so 0 * 110% is still 0. And of course, it still says You have the Cheetah cat, but it needs a speed boost... Cheetahs are fast, right?.
I literally got no guts to keep solving this challenge and the CTF contest actually closed so ye… this ends here.
Footnotes
-
This image confirms the length of these 2 codes (not sure bout the pattern). ↩ ↩2