Reversing - Strncmp

HelloMG
|2021. 1. 5. 17:39

오랜만에 돌아온 CTF 풀이이네요😁

 

우선 문제를 보도록합시다!

HackCTF - Strncmp

Strcnmp 파일을 하나 다운받을 수 있을 겁니다! 우선 IDA로 분석을 해보도록 하죠😀

Main

main 함수를 보면 위의 사진처럼 나오는 것을 볼 수 있습니다.

빨간칸은 암호화된 것처럼 보이는 문자열처럼 보이네요😀

 

그리고 파란칸은 "Enter your input:" 이라는 문자열과 scanf 함수로 v4에 담기게 되고 v5와 비교를 합니다.

!strcmp_(v4, v5)는 NOT연산이 되기 때문에 0이면 1이 되고 puts 함수를 통해 "Good game"을 출력하네요!

 

그럼 여기서 v4는 우리가 입력한 값이 되고 v5는 빨간칸 맨위의 문자를 기점으로 저 암호화된 문자열을 나타낸다는 것을 알 수 있습니다.😁

 

그럼 strcmp_를 분석하기 위해 들어가봅시다!

strcmp_

들어가보니 v3를 이용하여 막 뭔가를 하고 있고 for문으로 a1[j]와 key를 XOR하고 a2와 비교하는 걸로 보입니다!

처음에 v3가 뭐하는건지 계속 생각해봤는데 아무런 의미없는 녀석이더라구요..😑

 

결국 우리가 찾아야하는건 key인걸로 보입니다😁

key

Key를 찾아본 결과 check 함수에 들어 있는 것을 알 수 있으실 겁니다.

 

여기서 보면 if 함수 안에 v3 * (v3 -14) == 49라는 식이 주어졌고 이것이 맞으면 v3가 key값 이라고 합니다.😀

어려운 식이 아니라서 쉽게 계산 가능하시져😁

 

자 key 값을 구했으니 우리가 풀어야 하는건 "입력값 XOR key = 암호화" 입니다.

그럼 입력값을 구해줄려면 식이 어떻게 되어야 할까요?

 

"입력값 = 암호화 XOR key"

 

하지만 사람이 일일이 계산하기 어려우니 쉽게 코딩하여 풀어주면 됩니다~ 저는 Python으로 간단히 하였습니다!

Pyhton Source
Flag

 

그럼 이만 문제 풀이를 마치도록 하겠습니다.😀

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

Reversing - Keygen  (0) 2021.01.06
Web - LOL  (0) 2020.09.28
Reversing - Handray  (0) 2020.04.07
Forensics - 잔상  (0) 2020.04.02
Forensics - Terrorist  (0) 2020.03.31