Skip to content

gnull/buffer-overflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

## Не забыть отключить randomize_va_space ##

1. Ассемблер x86, AT&T
   - Основные команды, порядок операндов:
     mov, lea, jmp
     add, sub, xor, and, or, not...
   - Регистры:
     %eax, %ebx, %ecx, %edx
     %esp, %ebp
     %eip
   - Адресация:
     mov $123, %eax
     mov %ebx, %ecx
     mov 123, %eax
     mov 4(%eax), %ebx
   - Суффиксы b,w,l
   - Стек в линукс выровен по long(4 байта на x86)

2. Системный вызов в Линукс [./syscall/]
   - Передача параметров и возвращаемое значение
   - int $0x80
   - Показать пример

3. Соглашение о вызове cdecl
   - Аргументы кладутся в стек в обратном порядке
   - Результат возвращается в %eax(если результат целый и не больше 4-х байт)
   - Стек очищает вызывающая функция

4. Стек, кадр стека.
   - Назначение регистра %ebp
   - Команды push, pop, call, leave, ret

5. Пример стека [./stack_frame/]
   - Показать исходник и вывод objdump
   - Разобрать по шагам как изменяются значения регистров и стек

6. Переполнения буффера [./overflow/]
   - Рассказать как переполнение может повлиять на ход выполнения программы 
   - Рассказать, что такое shellcode
   - Показать шеллкод для hello world! [./overflow/shellcode-hello/]
   - Показать в дебаггере переполнение и выполнение шеллкода

About

A Tutorial on Buffer Overflows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published