문제
주어진 초기 코드는 변수에 데이터를 저장하고 출력하는 코드입니다. 아래와 같이 출력되도록 빈칸을 채워 코드를 완성해 주세요.
Spring is beginning
13
310
의도한 풀이는 이것일 것이다.
#include <iostream>
using namespace std;
int main(void) {
string msg = "Spring is beginning";
int val1 = 3;
string val2 = "3";
cout << msg << endl;
cout << val1 + 10 << endl;
cout << val2 + "10" << endl;
return 0;
}
그런데, 빈 칸 내의 내용에 아무런 제약이 존재하지 않아 특수한 풀이가 가능하다.
#include <iostream>
using namespace std;
int main(void) {
string msg = ""; printf("Spring is beginning\n13\n310"); return 0;
int val1 = 0;
string val2 = "";
cout << msg << endl;
cout << val1 + 10 << endl;
cout << val2 + "10" << endl;
return 0;
}

마치 SQL 인젝션을 떠올리게 한다.
다른 언어로도 가능하다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
String msg = ""; System.out.print("Spring is beginning\n13\n310"); if (true) return;
int val1 = 0;
String val2 = "";
System.out.println(msg);
System.out.println(val1 + 10);
System.out.println(val2 + "10");
}
}
string_msg = print('Spring is beginning\n13\n310'); exit()
int_val = None
string_val = None
print(string_msg)
print(int_val + 10)
print(string_val + "10")