Потоковый эксплойт
Обучаясь на первом курсе, попал я на зачёте по программированию к преподавателю нестрогому, но весьма вольно понимающему задания из листка «к зачёту». В итоге моя программа была забракована, хотя и работала правильно, и соответствовала заданию. После этого мне было выдано новое задание: написать прогу, складывающую две вводимые строки в одну без использования кошерных функций.
Маленький экскурс в компьютерную систему здания: все студенты работают на тонких клиентах, подключенных к могучему серверу с неадекватным поведением. Одной из черт его характера было то, что потоковый ввод надо закрывать дважды. Тёмные увлечения, а также нежелание сидеть на зачёте лишнее время не позволили пропустить такой шанс воспользоваться глобальной уязвимостью. Мной был написан код:
cin >> SumString;
cout << "Сумма строк: " << SumString;
На экране же это выглядело так:
> Это полов <Enter>
> ина строки <Enter>
> Сумма строк: Это половина строки
> Press any key to continue...
Пока препод в ведомости не расписался, нажимать на Any Key я не давал.