보안을 그리다, 훈이

[Web Hacking] 써니나타스(SuNiNaTaS) 1번 문제 Write Up 본문

Security/Wargame

[Web Hacking] 써니나타스(SuNiNaTaS) 1번 문제 Write Up

HooNeee 2021. 11. 14. 21:53

 

Web 분야 문제인 써니나타스(SuNiNaTaS) 1번을 풀어보았다.

 

 

Game 01

<%    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)  

suninatas.com

 

먼저, 문제 URL이 http://suninatas.com/challenge/web01/web01.asp인 것으로 보아 asp 파일이라는 것을 파악할 수 있다.

 

문제에 접속하면 아래와 같은 페이지가 나온다.

 

[SuNiNaTaS] Challenge 1

 

간단한 코드이므로 대부분 바로 풀 수 있을거라 생각되는 워밍업 문제이다.

 

코드를 훑어보니 대표적으로 세 가지 함수가 존재하는 것을 확인할 수 있다.

 

주요 함수 분석
str = Request("str") 값을 입력받아 변수 str에 저장한다.
Replace(str,"a","aad") 변수 str에 저장된 값 중 a를 aad로 치환한다.
Mid(result,2,2) 변수 result에 저장된 값의 2번째 자리부터 2개의 문자를 가져온다.

 

코드를 상세히 분석해보면 다음과 같다.

 

<%
	//값을 입력받아 변수 str에 저장함.
    str = Request("str")

	//변수 str이 공백이 아니라면(즉, 변수 str에 저장된 값이 존재하면),
    If not str = "" Then
    
    	//변수 str에 저장된 값 중 a를 aad로 치환하고 변수 result에 저장함.
        result = Replace(str,"a","aad")
        
        //변수 result에 저장된 값 중 i를 in으로 치환하고 변수 result에 저장함.
        result = Replace(result,"i","in")
        
        //변수 result에 저장된 값의 2번째 자리부터 2개의 문자를 가져와 result1에 저장함.
        result1 = Mid(result,2,2)
        
        //변수 result에 저장된 값의 4번째 자리부터 6개의 문자를 가져와 result2에 저장함.
        result2 = Mid(result,4,6)
        
        //변수 result1과 변수 result2에 저장된 각각의 값들을 합쳐 변수 result에 저장함.
        result = result1 & result2
        
        //변수 result에 저장된 값을 화면에 출력함.
        Response.write result
        
        //변수 result에 저장된 값이 admin이면,
        If result = "admin" Then
        
        	//변수 pw에 저장된 값을 출력함.
            pw = "????????"
        
        //if문 종료
        End if
        
    //if문 종료
    End if
%>

 

따라서, 다섯 가지의 과정을 수행한 후, 변수 result에 admin이 저장되어 있어야 한다.

 

str = ami 라고 가정해보자.
1 result = Replace(str,"a","aad") result = aadmi
2 result = Replace(result,"i","in") result = aadmin
3 result1 = Mid(result,2,2) result1 = ad
4 result2 = Mid(result,4,6) result2 = min
5 result = result1 & result2 result = admin

 

즉, 변수 str에 문자열 ami를 입력하면 변수 result가 admin이 되므로 비밀번호를 획득할 수 있게 된다.

 

텍스트박스에 ami를 입력하고 Check 버튼을 누르면 alert 창이 띄워지며 Congratulation!이라는 축하 메시지를 볼 수 있다.

 

아래 Authkey에 제시된 값을 AUTH 페이지에 SUBMIT하면 플래그 인증이 완료된다.

 


 

이로써, 써니나타스의 첫 문제를 클리어했다.

 

[SuNiNaTaS] Main Web Page

 

메인페이지 히스토리에 대문짝만하게 박힌 solved 로그.

 

그냥 올려봄,,^^

 

 

 

[써니나타스(SuNiNaTaS) 웹사이트]

 

써니나타스

웹해킹, 포렌식, 리버싱, 암호학, 해킹 워게임 제공.

www.suninatas.com

 

Comments