Pull to refresh

Comments 6

Внутри дампа изображение сохранилось лишь частично

Вроде целиком, там просто адреса чанков немного побитые были. Из дампа реконструировать картинку пришлось скриптом, а не через стандартные плагины volatility.

А как Вы вытащили cat.png? Команда
volatility --profile=Win7SP1x86 -f memdump.bin -Q 0x000000003fbfed28 dumpfiles -D ./
вообще ничего не сохранила. (где 0x000000003fbfed28 — адрес \Device\HarddiskVolume2\Users\user\Desktop\mr_cat.png\mr_cat.png.png)

Она не сохраняет, потому что адреса невалидные (насколько я помню, там добавлено 0x200000000 было). Я использовал флаг --unsafe и --summary-file чтобы получить эти адреса, а затем:


const fs = require('fs');

const CHUNKS = [0x0681b000, 0x0a31c000, 0x2581d000, 0x0c6de000, 0x37a1f000, 0x178e0000, 0x2e6a1000, 0x08462000, 0x05da3000, 0x3c6e4000, 0x176a5000, 0x3ce26000, 0x17ce7000, 0x20da8000, 0x066e9000, 0x20b6a000, 0x2e8ab000, 0x0aaec000, 0x1d66d000, 0x24c6e000, 0x26fef000, 0x287b0000, 0x14631000, 0x18432000, 0x2f633000, 0x2a634000, 0x08d75000, 0x208b6000, 0x105f7000, 0x213b8000, 0x2a279000, 0x0983a000, 0x2027b000, 0x2ed3c000, 0x180fd000, 0x264fe000, 0x0f13f000, 0x3b400000, 0x28d81000, 0x32d42000, 0x078c3000, 0x29044000, 0x240c5000, 0x10606000, 0x02147000, 0x018c8000, 0x2dfc9000, 0x1adca000, 0x0464b000, 0x0b78c000, 0x14b8d000, 0x1a00e000, 0x0640f000, 0x0f610000, 0x14191000, 0x06712000, 0x2e3d3000, 0x0fd94000, 0x06095000, 0x33cd6000, 0x0b217000, 0x3aa18000, 0x10619000, 0x3951a000, 0x3161b000, 0x33e9c000, 0x1571d000, 0x1771e000, 0x1a1df000, 0x3bf20000, 0x3b2e1000, 0x18b22000, 0x00863000, 0x220a4000, 0x1b0a5000, 0x05526000, 0x0bc27000, 0x2a0e8000, 0x15c29000, 0x18caa000, 0x223ab000, 0x3706c000, 0x112ad000, 0x352ae000, 0x36a6f000, 0x015f0000, 0x2fc31000, 0x19ef2000, 0x15fb3000, 0x11c34000, 0x343b5000, 0x21cf6000, 0x29ab7000, 0x0f738000, 0x09cf9000, 0x389ba000, 0x314bb000, 0x02ebc000, 0x2df3d000, 0x2453e000, 0x27e7f000, 0x2eb01000, 0x0ef01000, 0x2a942000, 0x12083000, 0x1e944000, 0x06485000, 0x2fc86000, 0x29e87000, 0x17648000, 0x031c9000, 0x0f60a000, 0x1190b000, 0x0004c000, 0x3b90d000, 0x3f7ce000, 0x31a4f000, 0x1ea50000, 0x0df11000, 0x0fa92000, 0x0d5d3000, 0x052d4000, 0x1ac55000, 0x35c16000, 0x2b697000, 0x0fed8000, 0x33419000, 0x216da000, 0x2f01b000, 0x3545c000, 0x1b59d000, 0x098de000, 0x207df000, 0x130e0000, 0x1f821000, 0x0fb22000, 0x01323000, 0x0c0a4000, 0x3f925000, 0x2cee6000, 0x085a7000, 0x036a8000, 0x2cae9000, 0x28f6a000, 0x09eab000, 0x1af2c000, 0x1bbed000, 0x3b82e000, 0x0582f000, 0x2c3f0000, 0x22eb1000, 0x3a9b2000, 0x12db3000]

const read = (fd, len, offset) => new Promise((resolve) => fs.read(fd, Buffer.alloc(len), 0, len, offset, (err, bytesRead, buffer) => {
  console.log(`Read ${bytesRead} bytes, err = ${err}`);
  resolve(buffer);
}));

(async function main(){
  const fd = fs.openSync('h:\\neoquest\\3\\volatility\\memdump.bin');
  const buffers = [];
  for (const offset of CHUNKS) {
    const buf = await read(fd, 0x1000, offset);
    buffers.push(buf);
  }

  fs.writeFileSync('h:\\neoquest\\3\\recovered.png', Buffer.concat(buffers), 'binary');
})();
А с чем связано у вас такое поведение?
Если я ввожу
...select author from (select * from picture) as X limit 1)…
То получаю ответ: Copyright: Man from the Ship
А если: select author from (select author from picture) as X limit 1)
то выводит Copyright:-
Хотя по идеи должно и так и так выводить первую запись.
Да, верно, но мне просто интересно почему разные результаты в двух вариантах, хотя должны быть одинаковыми. Если вставить код в Author:
1. fake3", (SELECT description FROM (SELECT * FROM picture) AS pic LIMIT 1)) — 2. fake3", (SELECT description FROM (SELECT description FROM picture) AS pic LIMIT 1)) — Со звездочкой работает как и задумано — выводит флаг, а вот во втором варианте выводит просто дефис. Хотя мы выбираем так же один столбец Description, а потом из него выбираем первое значение. Может глюк MySQL какой?! На локальной базе вывод одинаковый у обоих запросов)
Sign up to leave a comment.