Как через консоль найти ответы на тест

Mirea Ninja

Загрузка…

Сегодня нужно было сдавать тесты по промбезопасности, и нужно было выучить больше 200 вопросов. Я честно проработал почти 200 вопросов, но вот на обеде, один товарищ мне подсказал интересную идею, что сайт тестирования можно попробовать взломать и написать скрипт который бы автоматически давал бы подсказку правильного ответа. Конечно же я загорелся этой идеей — ведь можно потратить много часов времени чтобы автоматизировать ту работу, которую можно было бы сделать за полчаса — задача для настоящего программиста, да еще и хакера — приятно нае*ать систему. Есть еще одна статья даже с картинками про взлом другого теста https://boolkin.blogspot.com/2023/02/test-hack.html

Каково было мое удивление, когда в консоли разработчика я увидел что на сайте правильные ответы вообще никак не прячутся — все правильные ответы помечены признаком true, хоть и спрятаны в скрытых элементах. Пройдясь по всем скрытым элементам и найдя все те которые true — выяснилось что это реально правильные ответы. Дальше дело было за малым — нужно  было как-то показать какие ответы верные, и желательно скрыто. Почему-то я сразу же пошел самым сложным путем: решил создать на странице скрытый элемент куда записать все ответы в формате «Вопрос №х, Ответ: у». Этот элемент желательно скрывать от глаз посторонних и открывать только когда можно, по щелчку мышью по небольшой точке внизу, скрыть можно также щелкнув по ней же или по этому элементу. Конструкция довольно простая — решается тупо влоб — создать элемент, записать нужные свойства и добавить его на страницу

let el = document.getElementsByTagName(«body»)[0];
let div = document.createElement(«div»);
div.innerHTML = «.»;
div.style.position = «fixed»;
div.style.bottom = 0;
div.style.cursor= «pointer»;
div.style.zIndex = «999»;
el.after(div);
div.onclick = function () { let tog = document.getElementById(«ans»);
tog.style.display = tog.style.display ==»none» ? «inline-block» : «none»;
};

Таким же образом и div2 куда пишутся правильные ответы:

let div2 = document.createElement(«div»);
div2.id = «ans»;
div2.innerHTML = str;
div2.style.position = «fixed»;
div2.style.bottom = 0;
div2.style.display =»none»;
div2.style.cursor= «pointer»;
div2.style.zIndex = «9999»;
div.after(div2);
div2.onclick = function () { let tog = document.getElementById(«ans»); tog.style.display = tog.style.display ==»none» ? «inline-block» : «none»; };

Довольно интересно стало попробовать вызывать это меню по кнопке клавиатуры, и почти сразу нашел довольно простой скрипт, который таким же методом показывает и скрывает окно с правильным ответами:

document.addEventListener(«keydown», function(){
    var x=event.keyCode || event.which;
    if(x==17){
        var y = document.getElementById(«ans»);
        if (y.style.display === «block»){
            y.style.display = «none»;
        }
        else {
            y.style.display = «block»;
        }
    }
})  

И уже только потом я додумался что куда проще правильные ответы сделать не скрытыми элементами, и как выяснилось ответ в тесте и этот скрытый элемент с правильным ответом находятся под одним родительским элементом, а это значит что если подкрасить этот родительский элемент, то можно выделить этим цветом правильный ответ. В общем если применит не яркий цвет, то получится очень даже круто, код вообще супер простой:

let inp = document.getElementsByTagName(«input»);
for (let i=0;i<inp.length;i++) {
    if (inp[i].value == «true») inp[i].parentElement.style.backgroundColor = «snow»;
}

Snow — почти белый цвет, не бросается в глаза на белом фоне. Как я и говорил в коде находятся все теги input и родетели тех из них у которых значение тру выделяются цветом snow.

Все это очень круто реализуется при помощи букмарклета — можно взять предыдущий код целиком , закинуть его в генератор и получить желаемый результат, причем пришлось добаить конструкцию такую чтобы и на файрфоксе работало правильно

Ну и чтобы не пропадало добро, опубликую все это дело в виде букмарклета тут в блоге:

prombez24 тут собраны все функции — подсветка ответа, и скрытое окно которое можно открыть по кнопке CTRL или щелчку мышью

В сегодняшней статье мы покажем Как найти исходный код ответов на онлайн-тесты в нашем подробном руководстве.

Если вы проходите онлайн-тест на Blackboard, Canvas, Google Forms, Moodle и Classroom и не знаете, на что ответить.

Сегодня я научу тебя Как найти исходный код ответов на онлайн-тесты не слишком стараясь, здесь я научу вас шаг за шагом, как узнать ответы на онлайн-экзамен.

Как найти исходный код ответов на онлайн-тесты

Как найти исходный код ответов на онлайн-тесты

Как найти исходный код ответов на онлайн-тесты

У Google есть мощный инструмент для создания онлайн-тестов с автоматическим сбором ответов и распределением оценок.

Google Forms — это мощный инструмент для создания форм, который также можно использовать для создания онлайн-доказательств. Режим тестирования позволяет учителям создавать вопросы с неправильными и правильными альтернативами и выставлять баллы за каждый вопрос.

Google Chrome упрощает задачу, позволяя активировать инструмент из контекстного меню и «Проверки»; Точно так же у нас будет возможность доступа с помощью сочетания клавиш CTRL + Shift + I; для компьютеров с macOS вы будете использовать Option + Command + I.

Как найти ответы в Google Sheets

Вы также можете просматривать свои ответы в форме Google через электронную таблицу, которая автоматически сохраняется при создании формы Google. Сначала откройте форму Google внутри Google Drive .

1. Перейдите на вкладку «Ответы».

2. Выберите значок Google Sheets в правом верхнем углу.

3. Теперь вы должны увидеть ответы, отображаемые в электронной таблице.

Чтобы включить уведомления по электронной почте после того, как респонденты заполнили вашу форму, просто щелкните значок с тремя точками на той же вкладке «Ответы» и выберите «Получать уведомления по электронной почте о новых ответах».

Как узнать ответы на онлайн тест

B правой части каждого сообщения есть стрелки ⇧ и ⇩ . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.

1 июня стартовал летний поток курса » Тестирование Веб-Приложений на проникновение » от команды codeby . Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. На курс можно записаться до 10 июня включительно. Подробнее .

Как узнать ответы на онлайн тест

БлогNot. «Взлом» теста на www.lab521.narod.ru/test/06/index.htm

«Взлом» теста на www.lab521.narod.ru/test/06/index.htm

Здесь, видимо, человек, мыла которого я не указываю, начитался моих статей о «защите» HTML и Javascript, из которых следует, что ничего там защитить нельзя. Итак:

Тест использует скрипт
http://www.lab521.narod.ru/test/06/script.js
который, в свою очередь, берет данные с адреса
http://www.lab521.narod.ru/test/06/course.xml

Оба файла легко получить по этим URL’ам.

В последнем файле легко обнаружить секции вида

то есть, варианты ответов помечены идентификаторами базы данных и метками true-false (истина-ложь), в данном случае видно, что правилен второй вариант ответа. Однако, разработчик теста не догадался «перемешивать» вопросы перед выводом, так что порядок записей в XML-файле и есть порядок вывода их юзверю. Всё, что мне оставалось — открыть XML-файл в WORD’е и, пользуясь Ctrl+F, быстро находить текст вопроса и первую следующую за ним секцию answers. Затем смотрим, какой из вариантов помечен словом true — и вуаля. Время «взлома» — 1 минута, ещё 5 пришлось потратить, чтобы абсолютно ничего не зная по предмету, пройти тест с результатом 100% 🙂 Кстати, в 7-м из выданных мне вопросов баг — написано, что выбор single, а правильными помечены 1-й и 3-й варианты ответов.

KucheSmol FLIPS


  • #1

Здравствуйте всем глубинам интернета и не только.
На носу сессия надо закрывать все оценки и не как могу розпетлятся с этими ебучими тестами , уже как не пробовал не получается не по коду , не по вводу скрипка в сам код страници крч никак , если кто то шарит и может мне помочь БУДУ ИСКРИННЕ БЛАГОДАРЕН закину пару монет если решите мой вопрос.
Дело в том что сайт сделал как на подлянку что хуй чекнешь правильный ответ независимо через ( value , начиная от цифр там ( 1 — например правильно , 0 не правильно )) перепробовал всё , сайт на пароле не могу дать от него пар потому-что вход по фамилиям и по группам.
Вот такие скрины могу предоставить)

  • Записати.PNG

    Записати.PNG

    34,6 КБ

    · Просмотры: 2 569

  • чяс.PNG

    чяс.PNG

    31,2 КБ

    · Просмотры: 2 554

  • Записати.PNG

    Записати.PNG

    26,9 КБ

    · Просмотры: 2 729

В общем идея такая, имеются имеются radiobutton’ы нужно нажать выбрать ответы во всех вопросах, по нажатию на кнопку должно проверяться правильные ответы или нет. Вот с этим проблема с JS я знаком не сильно, и уже битый час не могу понять как проверить корректность ответа, уже и так и этак пробовал. Вот последний вариант:

function summary(){
    let count = document.getElementsByClassName('question').length; //Количество вопросов
    let answers = document.querySelectorAll('.question'); //Все элементы div с вопросами (???)
    let score = 0; //Количество верных ответов
    let rightAnswers = ['<input type="radio" name="quest0" id="a_1">','<input type="radio" name="quest1" id="a_3">','<input type="radio" name="quest2" id="a_1">'] //Список верных ответов
    
    for (let i = 0; i < count; i++){
        let chosenAnswer = answers[i].querySelector("input[type='radio']:checked"); //Из массива вопросов выбираем элемент радио, который выбрал пользователь
        if (chosenAnswer == rightAnswers[i]) //Думал что будет работать если будет свреять по html разметке, но зря
        {
            score++;
        }
        console.log("Выбранный ответ: " + chosenAnswer);
        console.log("Правильный ответ: " + rightAnswers[i]);
        console.log("Очки: " + score);
    }
}
<div class="question">
                <hr>
                <p class="text-center"><b>ВОПРОС №1: &laquo;В каком году родился Бродский?&raquo;</b></p>
                <ol>
                    <li><input type="radio" name="quest0" id="a_1"> <label class="form-check-label" for="a_1">В 1926 году</label></li>
                    <li><input type="radio" name="quest0" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
                    <li><input type="radio" name="quest0" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
                    <li><input type="radio" name="quest0" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
                </ol>
            </div>

            <div class="question">
            <hr>
                <p class="text-center"><b>ВОПРОС №2: &laquo;В каком году родился Бродский?&raquo;</b></p>
                <ol>
                    <li><input type="radio" name="quest1" id="a_1"> <label class="form-check-label" for="a_1">В 1926 году</label></li>
                    <li><input type="radio" name="quest1" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
                    <li><input type="radio" name="quest1" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
                    <li><input type="radio" name="quest1" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
                </ol>
            </div>

            <div class="question">
                <hr>
                <p class="text-center"><b>ВОПРОС №3: &laquo;В каком году родился Бродский?&raquo;</b></p>
                <ol>
                    <li><input type="radio" name="quest2" id="a_1"> <label class="form-check-label" for="z_1">В 1926 году</label></li>
                    <li><input type="radio" name="quest2" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
                    <li><input type="radio" name="quest2" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
                    <li><input type="radio" name="quest2" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
                </ol>
            </div>
            <hr>
            
            <button class="btn-success btn-lg btn-block" id ="apply" onclick="summary();">Получить результат</button>

Так вот, вопрос, как проверить что выбран был правильный radiobutton в каждом вопросе.

задан 15 дек 2019 в 16:08

Warden's user avatar

Не дублируйте id элементов. С повторяющимися id щелчки по label с for работают неправильно.

function summary() {
  let count = document.getElementsByClassName('question').length; //Количество вопросов
  let answers = document.querySelectorAll('.question'); //Все элементы div с вопросами (???)
  let score = 0; //Количество верных ответов
  let rightAnswers = ["a_1", "a_3", "a_1"] //Список верных ответов

  for (let i = 0; i < count; i++) {
    let chosenAnswer = answers[i].querySelector("input[type='radio']:checked"); //Из массива вопросов выбираем элемент радио, который выбрал пользователь
    if (chosenAnswer && chosenAnswer.id == rightAnswers[i]) //Думал что будет работать если будет свреять по html разметке, но зря
    {
      score++;
    }
    console.log("Выбранный ответ: " + chosenAnswer && chosenAnswer.parentNode.textContent);
    console.log("Правильный ответ: " + rightAnswers[i]);
    console.log("Очки: " + score);
  }
}
<div class="question">
  <hr>
  <p class="text-center"><b>ВОПРОС №1: &laquo;В каком году родился Бродский?&raquo;</b></p>
  <ol>
    <li><input type="radio" name="quest0" id="a_1"> <label class="form-check-label" for="a_1">В 1926 году</label></li>
    <li><input type="radio" name="quest0" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
    <li><input type="radio" name="quest0" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
    <li><input type="radio" name="quest0" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
  </ol>
</div>

<div class="question">
  <hr>
  <p class="text-center"><b>ВОПРОС №2: &laquo;В каком году родился Бродский?&raquo;</b></p>
  <ol>
    <li><input type="radio" name="quest1" id="a_1"> <label class="form-check-label" for="a_1">В 1926 году</label></li>
    <li><input type="radio" name="quest1" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
    <li><input type="radio" name="quest1" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
    <li><input type="radio" name="quest1" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
  </ol>
</div>

<div class="question">
  <hr>
  <p class="text-center"><b>ВОПРОС №3: &laquo;В каком году родился Бродский?&raquo;</b></p>
  <ol>
    <li><input type="radio" name="quest2" id="a_1"> <label class="form-check-label" for="z_1">В 1926 году</label></li>
    <li><input type="radio" name="quest2" id="a_2"> <label class="form-check-label" for="a_2">В 1936 году</label></li>
    <li><input type="radio" name="quest2" id="a_3"> <label class="form-check-label" for="a_3">В 1956 году</label></li>
    <li><input type="radio" name="quest2" id="a_4"> <label class="form-check-label" for="a_4">В 1986 году</label></li>
  </ol>
</div>
<hr>

<button class="btn-success btn-lg btn-block" id="apply" onclick="summary();">Получить результат</button>

ответ дан 15 дек 2019 в 16:33

1

Понравилась статья? Поделить с друзьями:
  • Как ребенку составить читать
  • Как найти двд в оценке недвижимости
  • Как найти температуру при изобарном процессе
  • Майнкрафт как они нашли херобрина
  • Как найти площадь четырехугольника если даны точки