tmxklab

[pwnable.kr] random 본문

War Game/pwnable.kr

[pwnable.kr] random

tmxk4221 2020. 11. 20. 17:37

1. 문제 확인

 

[random.c]

#include <stdio.h>

int main(){
	unsigned int random;
	random = rand();	// random value!

	unsigned int key=0;
	scanf("%d", &key);

	if( (key ^ random) == 0xdeadbeef ){
		printf("Good!\n");
		system("/bin/cat flag");
		return 0;
	}

	printf("Wrong, maybe you should try 2^32 cases.\n");
	return 0;
}

입력 값 key값과 random값을 xor한 결과 값이 0xdeadbeef랑 같으면 된다.

 


2. 접근 방법

 

random값을 가져올 때 seed값을 정하지 않고 걍 rand()리턴 값을 가져옴

따라서, 몇 번을 반복하든 random값은 고정 값임

 


3. 문제 풀이

 

random(4byte)값은 0x6b8b4567

 

0x6b8b4567 xor 0xdeadbeef = 0xb526fb88

따라서 입력 값에 3,039,230,856(0xb526fb88)을 넣으면 된다.

 

key변수의 자료형은 unsigned이므로 0 ~ 4,294,967,295(0xffff ffff)까지 입력받을 수 있다.

그래서 그냥 3,039,230,856(0xb526 fb88)을 넣으면 된다.


4. 몰랐던 개념

'War Game > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] leg  (0) 2020.11.20
[pwnable.kr] input  (0) 2020.11.20
[pwnable.kr] passcode  (0) 2020.11.20
[pwnable.kr] flag  (0) 2020.11.20
[pwnable.kr] bof  (0) 2020.11.20
Comments