コマンドライン引数(argv [0]、argv [1]など)を出力するCGIスクリプト(コンパイル済みCプログラム)があります。CGIスクリプトに等号が含まれているとパラメータが受信されない
私がhttp://ajf.me/c/?abcを試してみると、2番目のパラメータとして「abc」が得られます。
しかし、私が試してみると、http://ajf.me/c/?a=bcは2番目のパラメータがありません。
=
を使用すると、パラメータがプログラムに渡されないのはなぜですか?
それがここで問題とCコードの場合:そのコマンドラインでCGIプログラムにパラメータを渡す
#include <stdio.h>
int main (int argc, char *argv[]) {
int i;
printf("Content-Type: text/html;charset=utf-8\n\n");
printf("<!DOCTYPE html>\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>ajf.me powered by ANSI C!</title>\n");
printf("</head>\n");
printf("<body>\n");
printf("<h2>Supplied Arguments</h2>\n");
printf("argc: %d\n", argc);
printf("<ol>\n");
for (i = 0; i < argc; ++i) {
printf("<li>%s</li>\n", argv[i]);
}
printf("</ol>\n");
printf("<em>Yes, this is vulnerable to null-byte injection. For instance, <a href=\"?Injected%%00Null\" style=\"font-family: monospace; color: green;\">?Injected\\0Null</a>.</em>\n");
printf("</body>\n");
printf("</html>\n");
}
これらの_printf_呼び出しよりもリテラル文字列の連結に頼らないのはなぜですか? – sidyll