써니나타스의 Level 1을 들어가면 아래와 같은 페이지가 뜬다.
<%
str = Request("str") If not str = "" Then result = Replace(str,"a","aad") result = Replace(result,"i","in") result1 = Mid(result,2,2) result2 = Mid(result,4,6) result = result1 & result2 Response.write result If result = "admin" Then pw = "????????" End if End if %> |
제공된 소스 코드는 ASP다.
먼저 사용된 함수를 알아보면 다음과 같다.
result = Replace(str, "a", "aad")
str의 "a"를 "aad"로 바꿔라.
result1 = Mid(result, 2, 2)
Mid는 문자열의 지정 위치에서부터 지정한 길이의 문자열을 출력하는 함수다.
result의 2부터 2개의 문자열을 출력한다.
함수를 알아봤으니 이제 답을 구해보도록 한다.
소스코드의 아랫부분을 보면 result의 값이 "admin"일 경우에 pw를 알려주는 것 같다.
결과가 admin이 되어야 하므로 아래에서부터 하나씩 올라가면서 답을 구해야 한다.
result1 = Mid(result, 2, 2)
result2 = Mid(result, 4, 6)
result = result1&result2
result1과 result2의 and 연산 결과가 admin이 되어야 한다.
이때 result1과 result2 둘 다 result의 문자열을 잘라 각각 저장한 값이다.
그러므로 result의 값은 *admin일 것이다. (첫 번째 값은 모르기 때문에 *로 표기함)
result = Replace(result, "i", "in")
아래에서부터 하나씩 살펴보도록 한다.
result1의 문자열에서 i를 in으로 변경해야 한다.
현재 result의 값이 *admin이고 "in"이 포함된다.
result가 *admi인 것을 알 수 있다.
result = Replace(str,"a","aad")
result는 맨 처음 str의 "a"를 "aad"로 변경해야 한다.
위에서 result의 문자열이 "*admi"라고 유추했는데 *의 값이 "a"라고 생각하면 result의 값은 "aadmi"가 된다.
그리고 "aad"는 "a"로 변경해야 한다.
그러면 최초의 str 값은 "ami"가 된다.
"ami"를 입력하면 아래와 같이 Authkey 값이 출력된다.
Authkey : k09rsogjorejv934u592oi
'SuNiNaTaS > web' 카테고리의 다른 글
suninatas - Level 6 (0) | 2022.04.30 |
---|---|
suninatas - Level 4 (0) | 2022.04.29 |
suninatas - Level 7 (0) | 2022.04.29 |
suninatas - Level 3 (0) | 2022.04.29 |
suninatas - Level 2 (0) | 2022.04.29 |