워게임/247CTF

[247CTF] THE ENCRYPTED PASSWORD - 리버싱 / IDA

SecurityMan 2023. 10. 10. 11:00

 

247CTF 에서 제공하는

 

EASY 난이도의 리버싱 문제

 

반응형

 

 

문제에서 제공되는 파일은

 

encrypted_password 이다.

 

 

해당 파일을 리눅스 환경에서 실행시키면

 

Enter the secret password : 라는 문구가 출력되고

 

뭔가 입력을 했을때,

 

조건과 다르면 바로 종료가 된다.

 

 

IDA 도구를 이용해 해당 바이너리를 연 뒤

 

main 함수에서 F5를 눌러 수도코드를 보면 위와 같은 내용이 들어있다.

 

s 라는 변수에 875e9409f9811ba8560beee6fb0c77d2 라는 값이 저장되고,

 

s2 에는 0x5A53010106040309, 0x5C585354500A5B00, 0x555157570108520D, 0x5707530453040752

 

값이 들어있는것이 보인다.

 

for 문에서

 

s2와 s를 xor 해서 다시 s2에 저장하고,

 

사용자가 입력한 값은 s1에 저장되어

 

s2와 일치하는지 확인 후 flag를 찾았다는 문구의 출력여부를 결정한다.

 

xor 이기 때문에

 

간단하게 다시 xor을 해주면 된다.

 

 

CyberChef(https://gchq.github.io/CyberChef) 에서 xor 할 수 있다.

 

key 값에 s에 들어있던 값을 넣어주고 UTF8 로 설정해준다.

 

s2에 있던 값은 input 에 넣어주는데,

 

주의할 점은 리틀 엔디안 방식으로 저장되어 있기 때문에

 

맨 뒤에서부터 2개씩 끊어서 적어줘야 한다.

 

예를들어 0x5A53010106040309 의 경우

 

맨 뒤부터 09 03 04 06 01 01 53 5a 와 같이 적어주는 것이다.

 

그렇게 xor을 하면 output에 문자열이 하나 출력되는데

 

 

해당 값을 넣어보면

 

You found the flag! 문구가 출력되는것을 확인할 수 있다.

반응형