ipwn

Layer7 [CTF] DO NOT TOUCH ME! 본문

CTF's/Layer7

Layer7 [CTF] DO NOT TOUCH ME!

ipwn 2017. 12. 18. 09:06

이 문제는 리버싱 문제에 해당하는 문제입니다. 

이 문제는 난이도가 없지는 않아보이는 문제입니다.

DO NOT TOUCH ME
링크로 들어가서 파일을 다운로드 후 실행을 시켜보면
사진과 같이 실행결과가 출력 되는걸 알 수 있습니다.
그럼 이제 디버깅을 시작 해봅시다.

일단 이전은 생략하고 바로 메인함수 부분을 찾아 들어가봅시다.

메인 함수

이 부분이 바로 메인함수 부분입니다.

계속 주욱 내려가다보면

반복문

이렇게 생긴 반복문이 있네요.

보아하니 [EBP-60]과 [EBP-5C]의 값을 계속 증가시켜주는 듯 합니다.

이 반복문은 [EBP-60] = [EBP-5C] = 7이 될 때 끝이 납니다.

조금 더 밑으로 내려가봅시다.

Secret Key 받는 부분

위 사진과 같이 Secret key를 입력받는 함수가 보입니다.

플래그를 모르니 아무 값이나 입력하고 디버깅을 계속 해봅시다.

큰 반복문 1/2
큰 반복문 2/2
반복문 안의 작은 반복문

내려오다 보니 반복문이 두 개가 보이네요 큰 반복문 하나와 작은 반복문 하나가 보입니다.

반복문을 전체적으로 해석하면 아까 [EBP - 60]의 위치에 받은 7의 값으로 

입력받은 문자열들을 하나하나 XOR 해주는 반복문입니다.

바뀐 아스키 코드의 값이 "ftca"가 나왔는데요, 처음 입력값은 asdf였습니다.
즉 0000 0111의 값으로 잘 xor된 것을 확인 할 수 있습니다.

아무거나 입력한 값이므로 역시 검사를 진행 한 뒤 Nono..를 출력하는 위치로 이동되는군요,

검사를 끝낸 뒤 스택 부분에 쌓인 문자열은 보면 뜬금없이 "AKF@|chXlihpXfisn8z" 라는 문자열이 보입니다.

우리는 이렇게 마지막에 등장한 문자열로 입력받은 문자열은 검사한다는 것을 유추해볼 수 있습니다.

그럼 이렇게 등장한 AKF@|chX~hrXlihpXfisn8z라는 문자열을 하나하나 0000 0111의 값으로 xor 해줍시다.

그렇게 된다면 FLAG{do_you_know_anti?}라는 문자열이 나옵니다. (벌써부터 플래그 같군요ㅎㅎ)

혹시 모르니 FLAG{do_you_know_anti?} 문자열을 입력하고 프로그램을 실행시켜봅시다.


Correct! 정답! 플래그가 맞았습니다. 



'CTF's > Layer7' 카테고리의 다른 글

Layer7 [CTF] 후기  (0) 2017.12.18
Layer7 [CTF] Knock, Knock!  (0) 2017.12.18
Layer7 [CTF] Layer's Letter  (0) 2017.12.18
Comments