一連のシェル op コードを使用して、以下のコードのバッファの脆弱性を悪用する必要があります。私は Google が提案したほとんどすべてを見てきましたが、この特定の問題は、機能が分離されているために私を混乱させています。
void printThis(){
if(printf("You did it 1!") >=0) exit(0);
if(printf("You did it 2!") >=0) exit(0);
if(printf("You did it 3!") >=0) exit(0);
}
void readIn(FILE *f){
char exploit[12];
int i;
fscanf(f, "%s", exploit);
for( i = 0; i < 12; i++){
printf("%c", exploit[i]);
}
printf("\"\n");
}
int main(int argc, char** argv){
FILE *fp;
fp = fopen(argv[1], "r");
readIn(fp);
fclose(fp);
printf("You suck at exploiting. I should not be printed.");
}
異なるスタックを使用しているためreadIn()
、ステートメントの戻りアドレスでバッファーをオーバーフローさせる方法に興味があります。printThis()
直観は、印刷の呼び出しへのジャンプが機能すると言いますが、私はそれを機能させることができませんでした.
GDB のペイロードに必要な情報を取得するための提案はありますか? ご協力いただきありがとうございます!