WAR GAME/HackCTF

[HackCTF : Pwnable] Random key 풀이 (rand)

jir4vvit 2021. 3. 25. 15:18

문제 풀이 환경 : ubuntu 18.04
사용 툴 : IDA 7.5 pro

롸업보고 풀었는데, 안봤으면 못 풀었을 것 같다.


 

주어진 파일은 문제 바이너리 파일!

 

Analysis

random값과 내가 입력한 input값이 같으면 flag를 출력해 준다.

 

빨간 네모 친 부분을 잘 모르겠다면 아래 링크 참조!

jiravvit.tistory.com/entry/NOTE-coding-%EB%82%9C%EC%88%98%EC%83%9D%EC%84%B1randsrandtime-C%EC%96%B8%EC%96%B4?category=925961

 

[NOTE : coding] 난수생성(rand(),srand(),time()) (C언어)

환경 : ubuntu 18.04 hackCTF random_key 문제 풀면서 정리해봤다. 예전에 학교에서 배운 적 있었는데 이 랜덤 개념이 생각보다 자주 쓰인다고 해서 정리를 해보려고 한다. (근데 NOTE 카테고리 취지가 조금

jiravvit.tistory.com

 

How to exploit

같은 시간대에 또 다른 프로그램을 실행해도 시스템의 현재 시간을 가져온다.

 

같은 시간대에 아무 c언어 프로그램에서 rand()를 출력했을 때의 값을 input으로 주면 된다.

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

int main(void)
{
	srand(time(0));
	int random = rand();
	printf("%d\n", random);

	return 0;
}

gcc -o rand rand.c

 

Let's exploit

참고로 &&는 rand가 잘 실행됐을 때 뒤에 nc 명령을 수행한다.