CTF/포너블

[Tenable CTF] One Byte at a Time - 포너블 / XOR

SecurityMan 2023. 3. 18. 11:00

 

간단한 포너블 문제

 

풀이수가 401 이나 되는걸 보니 아주 쉬웠나보다.

 

반응형

 

별다른 설명없이 원격으로 접속할 수 있는 주소만 주어진다.

 

 

nc 를 이용해 원격접속을 해보면

 

[flag]> 라는 프롬포터가 나오면서 사용자의 입력을 받는다.

 

그럼 사용자의 입력값이 플래그와 어느정도 일치하는지 검증한 후,

 

입력한 부분까지 일치한다면 

 

플래그의 그 다음글자를 어떤 IPv4 주소의 랜덤한 부분과 XOR 한 결과를 알려준다.

 

 

일단 플래그 포맷이 flag{} 라는것을 알고 있기 때문에 

 

맨 먼저 f 부터 입력해봤다.

 

여러번 반복해서 입력해본 결과

 

f 를 입력했을때 결과로 나오는 값은

 

0x1b, 0x6e, 0x7c 세 가지였다.

 

이 세 값이 f 다음글자인 l 과 XOR을 했을때 나오는 값은

 

0x77 0x02 0x10 세 가지이다.

 

이 세 가지 숫자가 IPv4 주소를 구성한 숫자라고 추측할 수 있다.

 

그럼 한글자씩 늘려가면서 

 

0x77, 0x02, 0x10 과 각각 XOR 을 해보고 의미있는 문자열이 나오면

 

계속 플래그에 추가하는 방식으로 전체 플래그를 알아낼 수 있다.

 

Pwntool 을 이용해 문제를 풀어보려 했으나

 

네트워크 문젠지 너무 느려서 그냥 수작업으로 풀었다.

 

 

풀이는 이런 방식이다.

 

먼저 CyberChef(https://gchq.github.io/CyberChef/) 의 Input 값에

 

77 10 02 를 써놓고 From Hex 레시피를 추가한다.

 

그다음 원격접속 서버에서 출력된 값을

 

XOR 키값으로 넣은 뒤

 

Output 에 나오는 값을 보고 의미있는 문자열이 나오면 하나씩 추가하는 것이다.

 

 

이런 방식으로 한글자씩 알아내면

 

플래그를 찾을 수 있다.

반응형