본문 바로가기

해킹공부/pwnable.kr

random

순서대로 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를 확인할 수 있다.

 

걍 짤라도 될걸 굳이 색챌했다......

'해킹공부 > pwnable.kr' 카테고리의 다른 글

lotto  (0) 2017.08.30
mistake  (0) 2017.08.30
flag  (0) 2017.08.30
bof  (0) 2017.08.29
collision  (0) 2017.08.29