Загрузка…
Сегодня нужно было сдавать тесты по промбезопасности, и нужно было выучить больше 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-й варианты ответов.
-
#1
Здравствуйте всем глубинам интернета и не только.
На носу сессия надо закрывать все оценки и не как могу розпетлятся с этими ебучими тестами , уже как не пробовал не получается не по коду , не по вводу скрипка в сам код страници крч никак , если кто то шарит и может мне помочь БУДУ ИСКРИННЕ БЛАГОДАРЕН закину пару монет если решите мой вопрос.
Дело в том что сайт сделал как на подлянку что хуй чекнешь правильный ответ независимо через ( value , начиная от цифр там ( 1 — например правильно , 0 не правильно )) перепробовал всё , сайт на пароле не могу дать от него пар потому-что вход по фамилиям и по группам.
Вот такие скрины могу предоставить)
-
Записати.PNG
34,6 КБ
· Просмотры: 2 569
-
чяс.PNG
31,2 КБ
· Просмотры: 2 554
-
Записати.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: «В каком году родился Бродский?»</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: «В каком году родился Бродский?»</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: «В каком году родился Бродский?»</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
Не дублируйте 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: «В каком году родился Бродский?»</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: «В каком году родился Бродский?»</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: «В каком году родился Бродский?»</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