워게임 스터디

[241104][SuNiNaTaS] level 1

jisu0924 2024. 11. 4. 23:41

문제는 다음과 같다.

코드를 해석하자면,

  1. result는 str 문자열에서 "a"가 "aad"로 전환되고, "i"가 "in"으로 전환된 후,
  2. result의 2번째 자리에서 2개의 문자를 읽고 그걸 result1이라 한다.
  3. result의 4번째 자리에서 6개의 문자를 읽고 그걸 result2이라 한다.
  4. 2개를 연결한다 = result

즉, 저 과정을 다 거쳐 result가 admin이 되었다는 것이다. 이것을 추적하면 답을 얻을 수 있다.

우선, m은 변환되지 않으니 그대로 있을 것이다.

????m????

그리고 생각해 볼 수 있는 건, result2가 4번째 자리에서 6개를 불러오는데 글자가 5개밖에 되지 않으니 시작~끝이 5개 이하일 것이다. 때문에 마지막 문자가 문자열의 마지막이라고 볼 수 있다. 'i'가 'in'으로 바뀐다는 것을 고려하면 n이 아예 없었거나, i가 없어서 원래 있던 n이 result의 일부가 된 것인데 i가 없으면 admin이라는 단어를 완성시킬 수 없으니 끝에 'i'가 있어 그것이 'in'으로 변환되었을 것이다. 이것을 원래 있던 m과 합칠 수 있다. 만약 m뒤에 다른 문자가 있었으면 그 문자도 result에 같이 나왔을테니 다른 문자는 없다는 걸 알 수 있다. 

????min

 

 

 

result2를 보면 '4'번째 자리에서 6개를 읽으라고 했는데 만약 m이 4번째 자리가 아니라면 앞에 문자에서 올바른 단어인 ad가 있었을 것이다. 예를 들어 앞에 d가 있었기 때문에 4번째 자리가 d이고, 이걸 6개 읽어서 dmin가 됐다면? 앞에는 무조건 a가 있어야 한다. 그러나 a가 오면 aad로 바뀌기 때문에 d가 중복이 된다. 따라서 min 앞에는 d가 없고 a로 이루어져있을 것이다. 우선 a가 하나 있다는 가정을 하고 문자열을 만들어 보겠다.

 

a=1인 경우

ami = aadmin (변환)

result1=ad

result2=min

result1&result2=admin

 

조합이 됐기 때문에 답은 ami인 것을 알 수 있다.

 

'워게임 스터디' 카테고리의 다른 글

[241112][SuNiNaTaS] level 3  (0) 2024.11.12
[241104][SuNiNaTaS] level 2  (0) 2024.11.05
[241006][webhacking] old-01  (0) 2024.10.06
[241006][webhacking] old-17  (0) 2024.10.06
[241001][webhacking] old-14  (0) 2024.10.01