0
最近、私はret2libcの悪用に関するいくつかの実験を学んでいますが、私たちはペイロードを格納するために環境変数を使うことができ、次のコードgetenv.c
が環境変数:ret2libcを悪用しようとすると環境変数の場所を取得
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(int argc, char *argv[]) {
char *ptr;
if(argc < 3) {
printf("Usage: %s <environment var> <target program>\n", argv[0]);
exit(0);
}
ptr = getenv(argv[1]); /* Get env var location. */
ptr += (strlen(argv[0]) - strlen(argv[2])); /* Adjust for program name. */
printf("%s will be at %p\n", argv[1], ptr);
}
我々はプログラムをこのように使用することができます。
$ ~/getenv FAV ./program FAV will be at 0xbfffff22
それはptr
値はジ使用されていないことを私はとても混乱します直ちに、しかし、提出物を行う(strlen(argv[0]) - strlen(argv[2]))
;どうして?