microcorruption Hanoi

microcorruption.com lvl Hanoi

Tady je zajímavá funkce login.

heslo musí být mezi 8 a 16 znaky. Heslo je uloženo v r15, které, dle instrukce na 4540 začíná na adrese 2400.
Po otestování hesla skáče y 454a o 8 bytů na 4552, kde vidíme, že srovnává první byte z adresy 2410 s hodnotou 0x60. Pokud je tento byte 0x60, získáme přístup.
Login se dovolává funkce getsn.

Funkce getsn podle manuálu říká:

int getsn(char *cp, int size)
     The getsn() function reads user input from the console and returns on
     newline.  The result is written into cp, which is assumed to be size
     bytes long.

Tzn. vezme vstup od uživatele, napíše ho do cp. Takže uživatel tady má kontrolu nad cp a pokud není definován buffer, může být teoreticky libovolně velký…
Kam se zapisuje můj vstup?

2400 začíná. Na 2410 musí být 0x60, abych prošel…

Takže mám nad 2410 moc! Tzn. Musím jen zajistit pozici 0x60 na správném místě. Stačí tedy: 0102030405060708091011121314151660

Nápad na zlepšení?

Advertisements

Zanechat Odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

WordPress.com Logo

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit / Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit / Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit / Změnit )

Google+ photo

Komentujete pomocí vašeho Google+ účtu. Odhlásit / Změnit )

Připojování k %s