HackCTF Write Up/Reversing

HackCTF Reversing Strncmp Write Up

서원근양학계정 2021. 9. 19. 22:46

https://ctf.j0n9hyun.xyz/challenges

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

문제 파일을 IDA로 열고 main함수를 확인해보겠습니다.

입력을 받고 4F~7A와 비교를 해서 같으면 "Good game"이 출력되고

아니면 "Always dig deeper"를 출력하는 것으로 추정됩니다.

이제 strcmp_함수에 들어가서 자세히 분석해보겠습니다.

strcmp_함수를 디컴파일한 코드입니다.

v3이라는 변수가 있는데 딱히 하는 일은 없는 것 같습니다.

중요한 건 입력한 문자열이 들어있는 a1을 key라는 변수의 값과 XOR연산한다는 것입니다.

XOR연산을 마친 a1의 값과 a2에 들어있는 문자열이 같으면 성공메시지가 출력됩니다.

이제 key의 값을 알아보겠습니다.

이 부분에서 key의 값이 결정됩니다.

key의 값은 v3(v3-14)=-49라는 방정식의 해가 됩니다.

계산을 해보면 v3은 7이 됩니다.

 

이제 정리를 해보면 입력한 값을 7과 XOR연산해서 4F~7A값과 같으면 성공메시지가 출력됩니다.

알아낸 정보를 바탕으로 간단하게 코드를 짜서 답을 구해보겠습니다.

#include <stdio.h>
int main() 
{
    int i;
    char a[28]="OfdlDSA|3tXb32~X3tX@sX`4tXtz";
    for(i=0;i<28;i++)
    {
	a[i]^=7;
	printf("%c",a[i]);
    }
    return 0;
}

 

답:HackCTF{4s_e45y_4s_Gt_g3s_s}