Studying Security

[HackCTF] pwnable: Random Key 풀이 본문

Wargame/HackCTF

[HackCTF] pwnable: Random Key 풀이

J4guar 2022. 4. 12. 17:11
728x90
반응형

Mitigation

Vulnerability Analysis

IDA disassembler로 main함수를 살펴보자

<main>

time(NULL)을 seed를 주고 random한 값을 생성하고 있다.

Input Key를 입력하고 이 값이 생성한 random 값과 일치하면 flag를 보여주는 그런 파일인데

random한 값을 어떻게 맞출 수 있을까...?

로컬과 해당 서버가 같은 seed 값을 가지고 random한 값을 생성한다면 같은 random 값을 얻을 수 있을 것이다.

이를 해결하기 위해 ";"라는 다중 명령어를 사용하면 된다

난수 생성 프로그램 ; nc ctf.j0n9hyun.xyz 3014

난수 생성프로그램과 서버 접속을 동시에 하도록해서 생성된 random 값을 적어주면 원하는 flag를 얻을 수 있을 것이다.

Exploit code

local_random.c

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
        srand(time(NULL));
        printf("%d\n",rand());
        return 0;
}

Result

새로 접한 사실

";" 라는 명령어 하나의 명령어 라인에서 여러 개의 명령을 실행하게 해준다.

이를 이용해 time(NULL) seed에 대해 로컬 프로그램과 서버 접속을 동시에 수행함으로써 같은 seed를 주도록 만들어 서버 난수와 같은 난수를 얻을 수 있음

반응형
Comments