여기에 프로그램의 소스 코드가있다.이 터미널에서 나는 무엇을하고 있는가? : C 프로그래밍
#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에서는 뭔가 입력하는 것 같지만 실제로 무슨 일이 일어나는지는 잘 모르겠습니다.
이 내가 창문 http://i.imgur.com/0X8ZO.png에서 실행할 경우 발생하는 것입니다, 그런데
프로그램의 전체 포인트는 버퍼 오버 플로우를 입증했다. 스크린 샷에서 촬영
리눅스 호출, 상기 영업 이익의 코멘트에서
$ ./auth_overflow AAAAAAAAAAAAAAAA
Access Denied.
$ ./auth_overflow AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-=-=-=-=-=-=-=-=-=-=-=-=-=-
Access Granted.
-=-=-=-=-=-=-=-=-=-=-=-=-=-
어? "프로그램에서 내가 뭘하고 있는거야?" 디버거를 사용하여 프로그램의 실행을 추적하거나 인쇄 문을 추가 할 수없는 이유는 무엇입니까? –
당신이 내 친구만큼 혼란 스럽습니다 ... –
당신은 ... 명령 줄에 매개 변수를 제공하고 있습니까? –