脆弱性をよりよく理解するために、以下のコードを使用してバッファ オーバーフローをトリガーしようとしています。
特定のフィールドがあり、オーバーフローを防ぐために幅が指定されているフィールドもありますが、オーバーフローを可能にするために 1 つのケース (firstName) でそれを省略しました:
char firstName[21], surName[31], job[16];
printf("Enter first name: ");
scanf("%s", firstName);
printf("Enter surname: ");
scanf("%30s", surName);
printf("Enter job name : ");
scanf("%15s", job);
したがって、次のように入力すると:
UmbertoTestingOverflow
Example
Janitor
記録された変数は次のように表示されます。
UmbertoTestingOverfoExample
Example
Janitor
バッファ オーバーフローに関する私の理解によれば、firstname の余分な文字は別のフィールドに実行されているはずですが、この場合は別の変数からユーザー入力を取得し、それを名に追加しています。それで、このバッファオーバーフローの動作ですか、それとも他の何かがこれを引き起こしているのですか?