NahamCon-CTF 자물쇠 쓰기
리버스 챌린지에 대한 첫 번째 글입니다. 실수를 해서 죄송합니다.
도전:
제가 챌린지를 풀기 위해 한 모든 것을 설명드리도록 하겠습니다.
쉽고 기본적인 리버스 기법입니다. 처음에는 혹시나 실마리가 있나 싶어서 문자열을 시도해 보았으나 딱히 찾을 것이 없어서 파일을 실행시켜 보았더니 동작과 기능을 확인하기 위해 패스 코드를 요구합니다.
올바른지 아닌지 반환하는 패스 코드 인쇄를 사용합니다.
Ghidra를 사용하여 디콤 빌링해 보겠습니다 .
파일을 디컴파일하고 functions → main으로 이동하여 코드를 확인합니다.
이제 코드를 볼 수 있습니다(코드를 읽고 무엇을 하는지 이해하려면 프로그래밍 언어를 알아야 합니다).
여기에서 입력을 받아 교체("e"를 "3"으로, ""를 "_"로, "o"를 "0"으로, "a"를 "4"로 대체) 함수로 보냅니다
. variables
local_38 (입력값 저장)
sVar2 (local_38 길이 저장)
iVar1 (일부 문자열과 local_38 변수 내용 간 비교 결과 저장)
"if" 문 설명:
먼저 입력 길이 == 0x26 → 38인지 확인
그런 다음 strcmp 함수는 입력과 미리 정의된 문자열 "master locks are not vry strong are they"를 비교합니다.
하지만 대체할 내용을 위에서 설명하는 replace 함수가 있으므로 프로세스를 역전시켜 먼저 모든 문자를 대체하도록 해야 합니다. 그런 다음 프로그램에 입력합니다.
그리고 마침내 나는 깃발을 얻었다

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































