Tasga
One Level
- 21.12.2024
- 4
- 3
Недавно на нейкой CTF площадке мне надо было в сыром дампе стековой памяти процесса найти канарейку (просто дамп, а-ля px @ rsp, т.е в дебаггере не открыть, просто байты). Сам быдлоскрипт, конечно, правильно определил, но существуют ли какие-то человеческие способы для такой нестандартной задачи ?
Скрипт прилагаю, можете поржать над моими потугами
Скрипт прилагаю, можете поржать над моими потугами
Python:
from collections import Counter
from pwn import u64
adrs = []
with open("pid-4018-7ffc1efb8000-7ffc1efd9000", "rb") as file:
dmp = file.read()
for i in range(0, len(dmp), 8):
sub = dmp[i:i+8]
if (u64(sub) != 0) and ('0x7FF' not in str(hex(u64(sub)))) and (len(str(hex(u64(sub)))) == 18) and ( str(hex(u64(sub)))[-2:] == '00' ):
adrs.append(u64(sub))
counts = Counter(adrs)
print(hex(max(counts, key=counts.get)))