質問: "this is FLAG!!"; int main(int argc, char *argv[]) { char buf[1024]; strncpy(buf, argv[1], 100); printf(buf); printf("\n"); printf("secret FLAG : %p\n", secret); putchar('\n'); return 0; } ``` ### 試したこと 課題に対してアプローチしたことを記載してください python での攻撃は $ python -c 'print "\x1c\x20\x00\x00,%16$s"' | ./fsb_test で実行しました。 ソースコード上の secret[] の値を読み込みたいです。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: ``` python -c 'print "\x1c\x20\x00\x00,%16$s"' | ./fsb_test ``` として起動しているなら、fsb_testに引数が渡っていませんよね? これでfsb_test内でargv[1]を参照しているのでSegmentation faultになっているのでしょう。 fsb_test.c中の ``` strncpy(buf, argv[1], 100); ``` を ``` fgets(buf,sizeof(buf),stdin); ``` に変えれば動くでしょう。 pythonからの攻撃コードはここでは解説しません。 こことかこことか参考にしてみてください。