https://ctf.j0n9hyun.xyz/challenges
문제 파일을 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}
'HackCTF Write Up > Reversing' 카테고리의 다른 글
HackCTF Reversing Keygen Write Up (0) | 2021.09.20 |
---|---|
HackCTF Reversing Handray Write Up (0) | 2021.09.19 |
HackCTF Reversing Reversing Me Write Up (0) | 2021.09.19 |
HackCTF Reversing Welcome_REV Write Up (0) | 2021.09.19 |