본문 바로가기

CTF

[HackCTF/Reversing] Strncmp

Reversing문제중 3번문제  Strncmp 을 풀어보았다.

원하는 입력값을 넣어줘야하는 문제이다.

 

IDA 로 보니 실행해서 입력값이 틀렸을떄 나왔던 문자열을 볼수있었다.

 

즉 이 분기문만 해결하면 될것이다.

 

main 함수를 보니 이러한 문자열을 사용하기위해 선언해둔거같다.

 

위의 코드가 중요한 분기 과정인데

나에게 입력값을 받은후 if 조건문으로 들어간다.

 

이때 strcmp 가 흔히 알던 strcmp 인줄알았더니 뒤에 _ 가 붙어있는 만들어진 함수였다.

 

들어가보자. 이때 중요한것은 strcmp에 내가입력한값과 위에서 만들어놓은 문자열을 포인터로 가지고간다는점.

 

여기서 보니 내가입력해야하는것은 문자열인듯 하다.

 

 

 

아직 리버싱을 잘하지못해 

v3의 역활을 알지를 못해 1번째 for문이 무엇을 하는것인지모르겠다.

 

2번째 for 문에서는

내가입력한 문자열을 하나씩 접근하면서 각각에 key와 xor연산을 하는 모습이다.

 

그후에 return 으로 흔히알고있던 strcmp 의 결과값을 돌려주는데.

 

strcmp에서보니 변환된 내가입력한값  과  원래있던 문자열 "OfdlDSA|3tXb32~X3tX@sX`4tXtz"

을 비교하는모습이다.

 

 

즉 두번째 for문에서는 내가입력한 문자열이 key와 연산했을때 결과값으로 "OfdlDSA|3tXb32~X3tX@sX`4tXtz" 을원한다는것.

 

하지만 key를 찾지못해 "OfdlDSA|3tXb32~X3tX@sX`4tXtz" 을 기준으로 반복문을 돌려 key를 찾아보았다.

 

 

반복문을 통해 게속해서 연산해본결과

7과 연산한 결과값이 정답으로 보이는 문자열이 나온모습을 볼수있다.

'CTF' 카테고리의 다른 글

[HackCTF/Web] 마법봉  (0) 2019.05.22
[HackCTF/Web] Login  (0) 2019.05.22
[HackCTF/Reversing] Reversing Me  (0) 2019.05.22
[HackCTF/Reversing] Welcome_rev  (0) 2019.05.22
[reversing.kr] Easy Unpack 풀이  (0) 2019.05.20