cgy12306

[pwnable.kr] random 본문

Wargame/pwnable.kr

[pwnable.kr] random

cgy12306 2020. 1. 26. 22:43

[random]

소스코드를 살펴보자.

rand() 함수로 임의의 난수 값을 뽑아내서 key 와 xor연산한 후 0xdeadbeef와 같으면 /bin/cat flag 명령어를 실행하는 소스코드이다.
rand() 함수는 실행할 때 마다 같은 값을 뽑아내는 취약점이 있다.
우선 rand() 함수값을 출력하는 코드를 로컬에서 만들어서 실행해보자.
#include<stdio.h>
int main(){
    int ran;
    ran = rand();
    printf("%d", ran);
    return 0;
}

실행할 때 마다 1804289383이라는 같은 값을 반복해서 뽑아내는 것을 알 수 있다.
그럼 rand 값은 1804289383이다.
여기서 key와 rand 값을 xor 연산해야하는데 xor 연산 특성상 a ^ b = c 라는 식이 있으면 a ^ c = b도 되는 특성을 갖고 있다.
그럼 1804289383(rand) 과 0xdeadbeef를 xor 연산하면 우리가 입력해야 할 key 값을 알 수 있을것이다.

key 값은 3039230856이다.



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

[pwnable.kr ] coin1  (0) 2020.01.26
[pwnable.kr] input  (0) 2020.01.26
[pwnable.kr] passcode  (0) 2020.01.26
[pwnable.kr] shellshock  (0) 2020.01.26
[pwnable.kr] mistake  (0) 2020.01.26
Comments