|
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 4
|
||||||
Программная уязвимость в С19.06.2023, 17:25. Показов 3164. Ответов 24
Метки нет (Все метки)
Приветствую, помогите с решением данной проблемы.
Есть код:
──(kali㉿kali)-[~/Desktop] └─$ ./task1 please enter host for ping ya.ru command: ping host: ya.ru full command: ping ya.ru PING ya.ru (5.255.255.242) 56(84) bytes of data. 64 bytes from ya.ru (5.255.255.242): icmp_seq=1 ttl=247 time=9.28 ms Как сделать чтобы чтобы вместо ping выводило другую команду, не меняя код программы. При переполнении буфера выдает ошибку segmetation fault.
0
|
||||||
| 19.06.2023, 17:25 | |
|
Ответы с готовыми решениями:
24
Программная vs аппаратно-программная реализация функционала Уязвимость Уязвимость в ИЕ |
|
фрилансер
6466 / 5688 / 1131
Регистрация: 11.10.2019
Сообщений: 15,135
|
||
| 19.06.2023, 17:37 | ||
|
meth0d, calloc/malloc + gets должны помочь
Добавлено через 53 секунды char command[256] = "ping";
0
|
||
|
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 4
|
|
| 19.06.2023, 21:40 [ТС] | |
|
Eddy_Em
Нужно запустить существующий код, и когда запросит адрес пинга, написать набор символов, чтобы буфер переполнился и выполнилась друга команда, которую допишешь в конце. Код изменять нельзя, нужно использовать уязвимость буфера.
0
|
|
|
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 4
|
|
| 20.06.2023, 00:13 [ТС] | |
|
Eddy_Em
Код программы менять нельзя.
0
|
|
| 20.06.2023, 14:04 | |||||||||||
|
Маленькая подсказка -
gets() небезопасна - она не контроллирует размер вводимых символовПредупреждение от gcc:
Не знаю как там под винндой, но под linux и так всё работает (64 бита и прога и хост):
ping, но и ls -a, а ведь вместо этого можно и rm -f ~/ написать, грохнув при этом весь пользовательский "хомяк", а если под рутом, то и корень сильно прорядить можно: rm -f /
1
|
|||||||||||
|
Windows must die
|
||||||||||||
| 20.06.2023, 14:33 | ||||||||||||
--no-preserve-root.drfaust, я, честно говоря, об этом совсем не подумал: ТС упорно хочет буфер переполнить… Добавлено через 9 минут Таки до меня дошло:
А если 16-м символом ввести комментарий, то будет уже осмысленней:
2
|
||||||||||||
| 20.06.2023, 14:50 | ||||||
|
Eddy_Em, да. Так будет даже лучше:
1
|
||||||
|
Вездепух
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,259
|
|||
| 21.06.2023, 21:54 | |||
|
Во-вторых, если даже и рекомендовалось использовать int main(void), то начиная с С23 эта рекомендация больше не будет иметь силы: int main() становится полным эквивалентом int main(void).gets в языке С не существует.
0
|
|||
| 21.06.2023, 23:22 | ||
|
Включительно до С99 эта функция входит в стандартную библиотеку и включается через #include <stdio.h> З.Ы. Не стоит забывать о том, что существуют компиляторы и архитектуры (например Z80) которые не могут следить за новыми веяниями моды (хоть и считаю исключение gets() из последних стандартов оправданным)
0
|
||
|
Windows must die
|
||
| 21.06.2023, 23:30 | ||
|
0
|
||
| 22.06.2023, 12:02 | ||||
|
Я отвечал TheCalligrapherу, на его фразу о том, что в Си не существует этой функции.
0
|
||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 24.06.2023, 04:53 | |
|
drfaust, нужно правильно понимать фразу "не существует". Язык Си описывается спецификацией (стандартом ISO), актуальной спецификацией языка считается последняя ее версия. Если в актуальной спецификации чего-то не существует, значит и в языке этого не существует.
Ближайшая аналогия с юриспруденцией: например, если говорить без иронии и передергивания, нельзя будет сказать, что в России существует крепостное право. Хотя разумеется когда-то давно было множество законов, регулирующих крепостное право и когда-то оно было полностью легитимно.
0
|
|
| 24.06.2023, 11:26 | |
|
DrOffset, софистика и демагогия это.
Если единственный компилятор под железяку поддерживает только C89, то значит стандарт существует. Стандарт - это техническая документация, а не "2й том мёртвых душ". Если стандарт выпущен, то будет существовать вечно, а вот следовать ему или нет - это уже дело разработчика. И данная тема тому свидетельство - преподаватель использовал древний стандарт для обучения студентов в качестве задания - показать как можно использовать переполнение буфера.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 24.06.2023, 12:42 | |
|
drfaust, так, ну во-первых мне не понятна эта агрессивная манера мне возражать, какая софистика, какая демагогия? Я в этой теме только дал пояснения сказанного TheCalligrapher. Как раз, чтобы избежать софистики и демагогии очень полезно в дискуссии понимать о чем говорит собеседник. Я допускаю, что вы можете быть не согласным с данным моментом, но понять-то вы его можете?
Во-вторых, ну нет тут никакой софистики. Формализм некоторый есть, да. Очень простая же мысль: при выходе нового стандарта, язык Си (без всяких суффиксов и префиксов) описывает именно он - это актуальное состояние. Все остальные стандарты естественно никуда не деваются, они продолжают существовать и использоваться, но описывают они прошлые версии языка. Для удобства и понимания о какой именно прошлой версии идет речь, уже не обойтись без добавления конкретных суффиксов (C89, C99, и т.д.). Вы и сами это делаете в этой теме. Таким образом, фразы "в языке C не существует функции gets" и "в языке С89 функция gets существует" - никак друг другу не противоречат. PS. Аналогия с законами иллюстрировала только один конкретный аспект: принятие актуальной версии и использование формулировок, в которых состояние актуальной версии описывает предмет обсуждения в целом. Кликните здесь для просмотра всего текста
Однако аналогия уже не работает в том моменте, что в отличие от условного УК прошлой версии, стандарты языков программирования продолжают действовать в тех реализациях, которые его уже используют. Поэтому аналогия была "ближайшей", а не "точной". Аналогии вообще никогда не бывают точными, надо бы пореже их использовать, особенно когда дискуссия предполагает превратиться в спор - лишний повод прицепиться к несостыковкам. Но это уже так, мысли в слух.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 25.06.2023, 16:13 | ||
|
drfaust, если мы сравниваем с текущей версией языка, то не обязательно. Последний стандарт всегда описывает язык С (или другой язык, который стандартизирует ISO) в его актуальном состоянии. Новый стандарт не вводит новый язык. Зато новый стандарт переводит старые реализации в разряд диалектов. Поэтому при сравнении с ними уже обязательно указывать номер.
Вся эта логика вытекает из формально принятого в ISO жизненного цикла спецификаций языка. По ней, новый стандарт именно заменяет предыдущий. Потому что у языка может быть только один действующий стандарт. Зайдите сюда, и убедитесь в этом: https://www.iso.org/standard/74528.html Понятно, что какие-то реализации могут остаться на уровне старых версий стандарта. Но это их дело, на формальную сторону вопроса это никак не влияет. Стандарт же явно предписывает изменять реализации, чтобы соответствовать текущему состоянию языка.
0
|
||
| 25.06.2023, 16:13 | |
|
Помогаю со студенческими работами здесь
20
Уязвимость
Критическая уязвимость в Wi-fi Уязвимость сайта Уязвимость в процедуре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|