Я пытаюсь изучить переполнение стека, но у меня проблема с упражнением. В уязвимой программе часть кода, которая должна получить мой шелл-код:
int array[8];
index = (int) strtol(argv[1], NULL, 10);
value = (int) strtoul(argv[2], NULL, 16);
array[index] = value;
Я легко нашел индекс массива, который можно использовать для перезаписи RET. Затем я попытался найти смещение адреса возврата в уязвимой программе следующим образом:
./victim 12 $(printf "%0512x" 0)
Я пробовал много разных длин, но на каждой возможной длине я получаю ошибку сегментации. Это странно, потому что моя книга говорит, что я смогу получить ошибку сегментации только там, где сохранен обратный адрес.
Я новичок, поэтому, вероятно, я делаю основную ошибку. Может ли кто-нибудь помочь мне решить эту проблему?
Заранее спасибо за любую помощь.