
pwnable.kr lotto 문제 !
여느 문제들과 동일하게 디렉토리에는 실행파일, 소스코드, flag 파일이 들어있다.
먼저 소스코드의 내용을 이해해보았다.

위의 소스코드에서 마지막 for문을 보면
랜덤으로 6개의 숫자가 lotto 배열에 저장되는 것을 볼 수 있는데
숫자는 아스키 코드 값 1~45 까지 랜덤한 숫자로 정해지는 것을 알 수 있다.

이어서 play 함수의 calculate lotto score 부분을 보면
이중 for문을 사용하여 사용자에게 입력받은 문자열과
무작위로 배정한 lotto[]의 값이 일치하는 부분을 확인할 수 있다.
match 값이 6이 되면 lotto 값과 submit의 값이 일치하는 것으로 판단하는데
이중 for문은 6번씩 2중을 확인해 총 36번을 돌게 되므로
하나의 문자만 일치하면 match값 6을 만족하게 되는 잘못 된 소스코드이다.

게임을 진행하게 하는 부분이다.
문제를 풀려면case 1을 선택하여 play() 함수가 실행되게 하면 된다.
1~45까지 아스키 코드 중에 아무 값이나 6개를 넣어서 이중 하나만 lotto 번호와 일치하면
flag 값을 얻을 수 있을 것이다.

! 6개를 계속해서 입력해 보았고
4번 정도 시도하였을 때 flag 값을 얻을 수 있었다.
sorry mom... I FORGOT to check duplicate numbers... :(
