LINUX.ORG.RU

Научите в монго-инъекции

 , , ,


1

1

Есть один CTF. В нём нода и монга. Код примерно такой:

app.get('/q', function(request, response) {
    let id = request.query.id;
    collection.findOne({id: id}).then(obj => {
        response.send(obj.text);
        response.end();
    }).catch(e => {
        response.send('nope');
        response.end();
    });
});

В качестве id длинные хеши, фиг угадаешь.

Я в этих ваших нодах не понимаю, а в монгах и того меньше. Покурил доки, сделал так

curl 'http://hostname/q?id[$regex]=.*'

Оно выдало какой-то текст, видимо из первого объекта. Текст не тот. Выдать все тексты видимо не выйдет, т.к. findOne. Какой нибудь оффсет видимо тоже просто так не сделать, $slice надо во второй аргумент пихать. Знаю как должен примерно выглядеть текст, но по тексту искать не могу, только по id.

Ткните что-ли куда копать.


Эксперты кончились, даже не «афтар – мудаг, монга не нужна»?

suuaq
() автор топика

Не понимаю, как это

Оно выдало какой-то текст, видимо из первого объекта.

Вяжется с этим

Текст не тот.

По сабжу: так как дыра в API позволяет искать не по точному совпадению, а по любому запросу к полю id (https://docs.mongodb.com/manual/reference/operator/query/), то, наверное, что-то можно заэксплоитить (но в эксплоитах я вообще не силен, увы).

Навскидку, можно найти документ, созданный позже определенного timestamp’a, потому что bsonid можно с ним сравнивать.

Octagon
()
Последнее исправление: Octagon (всего исправлений: 1)
Ответ на: комментарий от Octagon

Не понимаю, как это Вяжется с этим

Цель задачи — найти текст от которого известны несколько первых букв. Я думал, что нашел дыру и сразу выужу нужный текст.

Я немного потыкал id типа

curl 'http://hostname/q?id[$regex]=.*'
> первый_текст
curl 'http://hostname/q?id[$regex]=^aa.*'
> второй_текст
curl 'http://hostname/q?id[$regex]=^ab.*'
> третий_текст
...

Оказалось что там больше сотни объектов и нужный текст так просто не найдешь.

suuaq
() автор топика
Последнее исправление: suuaq (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.