Ahojte, snažím se vyřešit buffer overflow úlohu na https://exploit.education/…stack-three/.
Úlohu řeším na x86_64 parrot linuxu. Nechci to řešit na jejich virtuálce,
protože na mém PC řeším i jiné úlohy a tak chci zůstat ve svém
prostředí.
Když binární soubor spustím přes gdb, tak se mi ukáže "Entry point:
0x1070", když však soubor spustím přes příkaz "run" a následně se
podívám znovu na "info file", tak zjistím, že je entry point na adrese
0x555555555070 (tento jev se mi děje naprosto u každého binárního
souboru).
Problém taky je, že se mi do proměnné *fp uloží jen jeden "blok" tady z
toho dumpu stacku, takže po změně adresy po prvním spuštění nemůžu
celou adresu instrukce namáčknout do toho bloku:
0x7fffffffdf40: 0x41414141 0x41414141 0x41414141 0x41414141
Je tato úloha vůbec řešitelná na mém PC ?
Zkusil jsem: ZKoušel jsem také napsat python script na automatický
exploit, ale jak se mi tam přepusjí ty adresy, tak to strašně blbne s
brainpointama.
# POC:
aaaaaaaabaaaaaaacaaaaaaadaaaaaaaeaaaaaaafaaaaaaagaaaaaaahaaaaaaaiaaaaaaaj
# 0x0000555555555155 - win function
from pwn import *
context(terminal=['tmux', 'new-window'])
p = gdb.debug('./main')
context(os='linux', arch='amd64')
Chci docílit: Redirectnout flow programu do funkce "win"
No konec bych rád zmínil, že jsem celkem nováček na poli
nízkoúrovňových věcí, mám za sebou jen jeden kurz. Tak budu moc rád za
kteroukoli radu. Děkuji
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.