반응형
!! 현재 문제는 경북소프트웨어고등학교의 CTF 사이트에서 출제된 문제입니다.
문제는 참고만 부탁드립니다. !!
[문제]
프로그램이 주어지고
프로그램을 실행하면 위와같이 뜬다.
[풀이]
아무 값이나 입력하면 No라고 뜬다.
IDA를 사용해서 코드를 본다.
for ( i = 0; i <= 19; ++i )
{
flag1[i] ^= (i + 10) ^ (unsigned __int8)i;
if ( flag1[i] == flag[i] )
++key;
flag[i] = 0;
flag1[i] = 0;
if ( i + 1 != key )
break;
}
이 부분을 보면 flag1에 입력된 값을 xor로 연산하여 yi~M^LmN*hL-l)d#;d7s 와 같은 값이 되면 Correct! 가 뜬다.
#include<iostream>
#include<string>
using namespace std;
char flag1[20];
string flag = "yi~M^LmN*hL-l)d#;d7s";
int main(){
for(int i = 0; i <= 19; ++i){
flag[i] ^= (i + 10) ^ i;
cout << flag[i];
}
}
C++로 위와 같은 코드를 짜주고 실행한다면
Flag값이 나오게 되고 프로그램에 입력했을 때도 Flag값이 일치하여 Correct!가 뜨는 걸 확인할 수 있다.
[FLAG]
scpCTF{X0rR3v3r51n9}
반응형