Try to be the expert.

Ainsetin's Hacking & PS & Math

Hacking/HackCTF

HackCTF Random Key Write-up

Ainsetin 2020. 1. 7. 20:35

이번에 Random Key 문제를 풀어보겠다.

 

 

우선 checksec부터 해보자.

 

 

기본적으로 64bit 기반의 바이너리이고, NX bit가 걸려 있다. 한번 IDA로 코드를 봐보자.

 

main()

아무래도 내가 입력한 값과 랜덤으로 생성되는 값이 일치해야 flag를 주나 보다.

 

우선 지금까지 문제 중에 보지 못한 srand 함수와 rand 함수가 있다. 그런데 srand(v3)를 보니 rand의 시드가 현재 시간으로 정해져 있다는 것을 알 수 있다.

 

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

 

v5의 값이 rand()이지만 같은 시간에 아무 c언어 프로그램에서 rand()를 출력했을 때 보이는 값이 v5의 값과 같은 것이다.

 

따라서 나는 C언어 프로그램을 작성하여 이 문제를 해결하였고, 동시에 2개를 실행시켜주는 리눅스 명령어를 통해 이 문제를 해결하였다.

 

random_ex.c

우선 이러한 c언어 코드를 작성한 후, 컴파일하였다.

 

 

여기서 나오는 352183682를 nc 서버 시작 시간과 맞추면 flag를 획득할 수 있을 것이다.

 

내가 사용한 명령어는 다음과 같다.

 

./random_ex ; nc ctf.j0n9hyun.xyz 3014

 

사이의 ;은 두 명령어를 연속으로 실행하게 해 준다. 저것이 가장 중요한 부분이다.

 

 

flag가 획득된 것을 볼 수 있다!!!

'Hacking > HackCTF' 카테고리의 다른 글

HackCTF Look at me Write-up  (0) 2020.01.08
HackCTF RTL_Core Write-up  (0) 2020.01.07
HackCTF 1996 Write-up  (0) 2020.01.07
HackCTF poet Write-up  (0) 2020.01.07
HackCTF g++ pwn Write-up  (0) 2020.01.07