tmxklab
[pwnable.kr] random 본문
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