challenges 01
문제
<%
str = Request("str")
// 사용자가 서버로 보내는 요청이나 데이터를 얻어내는 역할
If not str = "" Then
result = Replace(str,"a","aad")
// a → add
result = Replace(result,"i","in")
// i → in
result1 = Mid(result,2,2)
// result1 = result의 두 번째 ~ 세 번째 글자
result2 = Mid(result,4,6)
// result2 = result의 네 번째 ~ 아홉 번째 글자
result = result1 & result2
Response.write result
// result를 출력한다
If result = "admin" Then
// result가 "admin"이라면
pw = "????????"
End if
End if
%>
처음에는 <% %>를 PHP로 착각했는데 ASP의 스크립틀릿이라는 것을 알았다.
이를 바탕으로 ASP의 함수를 공부했다.
replace(str, from_str, to_str) : str에서 from_str을 to_str으로 바꿔 반환하는 함수
mid(str, pos, len) : str을 pos번째부터 len 길이만큼의 문자를 반환하는 함수
& : 연결연산자, 문자열을 합침
위의 문제는 즉 str에서 a를 aad로 바꾸고 i를 in으로 바꾼뒤 두 번째 글자부터 아홉 번째 글자까지 자르고 그 값이 admin과 같다면 pw를 출력한다는 뜻이다.
우선 admin이 나오기 위해 aad와 in을 거꾸로 바꾸면 (a)admin → ami가 된다.
aadmin은 9글자가 되지 않지만 mid함수가 aadmin의 6글자 이상을 처리하지 않을 것이라 가정하고 aadmin을 str에 집어넣었다.
congratulation과 함께 authkey가 출력된다
AUTH 페이지에 authkey를 입력하면 문제 해결
'wargame > suninatas' 카테고리의 다른 글
[suninatas]challenges 05 (0) | 2019.10.03 |
---|---|
[suninatas]challenges 04 (0) | 2019.10.01 |
[suninatas]challenges 03 (0) | 2019.09.18 |
[suninatas]challanges 02 (0) | 2019.09.17 |