순서대로 passcode를 풀 차례지만 10점에 허걱하고 옆에있는 1점짜리 random 먼저 풀기로 했다.
이름이 random이니 random하게 순서가 매겨졌다( 뭐래... )
rand()함수를 사용해 받은 값과 scanf()로 입력받은 key값을 xor한 값이 0xdeadbeef여야 한다.
rand()함수를 사용해본 사람들은 알겠지만 srand를 사용해 시드값을 바꿔주지 않으면 rand()함수는 매번 똑같은 값을 반환한다.
웹 컴파일러를 사용해 확인해보자
매번 1804289383을 반환한다.
그럼 이 값과 xor연산을 했을 때 0xdeadbeef가 나오는 값은 random값과 0xdeadbeef의 xor연산을 통해 알 수 있다.
0xdeadbeef ^ 0x6B8B4567(random in hex) = 0xB526FB88
이 값을 int형 변수에 대입하면 정수로 -1255736440이다.
즉 key를 입력받는 scanf()에서 -1255736440를 입력하면 flag를 확인할 수 있다.
걍 짤라도 될걸 굳이 색챌했다......