uju's Tech

[HackCTF]reversing_strncmp 본문

Security/HackCTF

[HackCTF]reversing_strncmp

ujusy 2020. 6. 13. 03:31

<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!

writeup이므로 편하게 작성하였습니다!>

 

파일 확인 해보니

 elf 64 비트 실행 파일 임을 알았다.

 

chmod 777 권한을 부여하여 실행해보자!

 

실행

실행해보니 input을 받고 그에따라 값을 내보내는것 같다.

 

그렇다면 조건문에서 내 input과 어떠한 값을 확인하고  분기하여 값을 출력함을 알 수 있다.



먼저 디버깅을 해보자~!

 

main 디버깅

strcmp비교해서 분기

strcmp에서 비교 후 분기하는것을 확인할 수 있다.

브레이크 포인트를 main+185에 걸어주자1

r 으로 실행!

 

실행화면

내가 입력한 dddddd와 비교하는 값을 레지스터를 통해 확인하였다.

 

레지스터 확인

얼핏 보니 OfdlDSA|3tXb32~X3tX@sX`4tXtz 랑 비교를 해서 같으면 good game을 출력해준다.

goodgame!

 

그렇다면 여기서 우리는 비교하는 값이 OfdlDSA|3tXb32~X3tX@sX`4tXtz 임을 알았다.

 

이제 ida를 살펴보자!

ida에서 strcmp함수를 살펴보자,

 

strcmp함수

 

반복문이 2개가 있는데 2번 째 반복문을 보면 내가 입력한 값에 key를 xor연산 해준것을 a1배열에 넣어주어서 strncmp로 return 해준다.

 

그럼 key값이 무엇인지 확인해보자.

 

key는 check함수에서 생성이 된다.

check

 

이 함수에서 조건문을 살펴보면 -49 이면 v3가 key아니면 key가 0으로 해준다.

 

저 연산을 만족하는 key는 금방 눈에 보인다. 7*(-7)  = -49

key는 7이다.

 

역연산 코드를 짜보자.

 

arr과 key값을 xor연산하면 flag가 나온다.

 끝!

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

[HackCTF]reversing_Handray_쉬운 풀이 version  (0) 2020.06.13
[HackCTF]reversing_Handray  (0) 2020.06.13
Comments