Pull to refresh

Comments 5

В чем задача у задания Spectre? Кто-то действительно считает, что исправлять битый (пусть и умышленно) файл — весело?

VladikSS, думаю, если глубоко не вдаваться в подробности уязвимости Spectre, данный битый файл получен с помощью этой уязвимости. В кратце про Meltdown и Spectre, при попытке чтения сегментов памяти через кэш cpu, есть некий шанс приближенный к 100% (99.8% например) получить абсолютно идентичный дамп.

UFO just landed and posted this here

Я решал 9-ый без ревёрса, сдампил всю память машины через gdb, посмотрел как мигают лампочки, восстановил память и выставил нужную последовательность.


Примерно в середине квеста организаторы запатчили таск с луа и его стало невозможно пройти указанным способом.

В 9-м пересчитывать CRC32 для всего образа достаточно долго. Вместо этого можно заранее посчитать CRC от начала до первого битого байта, и сразу после последнего битого. Второе можно сделать, «отмотав» CRC от конца до нужного места (я использовал github.com/theonlypwner/crc32). Зная эти два значения, можно пересчитывать CRC только для 3-х битых байтов, что гораздо быстрее:
from binascii import crc32
from struct import pack

value = 0x7ffcce87
target = 0xea4af7fe

for i in range(0x1000000):
    data = pack("I", i)[:-1]
    crc = crc32(data, value)
    if crc == target:
        print("FOUND: %s" % data.hex())
Sign up to leave a comment.

Articles