ここにプログラムのソースコードがあります。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int check_authentication(char *password)
{
if(strcmp(password, "brillig") == 0)
return 1;
if(strcmp(password, "outgrabe") == 0)
return 1;
return 0;
}
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Usage: %s <password>\n", argv[0]);
exit(0);
}
if(check_authentication(argv[1]))
{
printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
printf(" Access Granted.\n");
printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
}
else
{
printf("\nAccess Denied.\n");
}
return 0;
}
この画像のプログラムに対して正確に何をしているのでしょうか? http://i.imgur.com/7FF9x.png .
このプログラムを Windows で実行しようとすると何も入力できませんが、UBUNTU では何かを入力していると思いますが、何が起こっているのかよくわかりません。
Windowsで実行するとこうなりますhttp://i.imgur.com/0X8ZO.png、
ところで、このプログラムの要点は、バッファ オーバーフローを示すことでした。
スクリーンショットから取得した Linux 呼び出し:
$ ./auth_overflow AAAAAAAAAAAAAAAA
Access Denied.
$ ./auth_overflow AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-=-=-=-=-=-=-=-=-=-=-=-=-=-
Access Granted.
-=-=-=-=-=-=-=-=-=-=-=-=-=-