▶문제
http://suninatas.com/challenge/web01/web01.asp
항상 드림핵만 풀다가 써니나타스라는걸 처음 접했다! 드림핵이랑 비슷하게 워게임을 제공하는 사이트라고 한다.
▶ 풀이
문제 사이트를 클릭하니 위와 같이 소스코드가 먼저 나왔다. 이것저것 보다가 상단에 "main"을 눌러봤더니 써니나타스 홈페이지로 연결되었다. "Check"를 눌러 답을 제출하면 되는 것 같다. pw에 ?라고 되어있는걸 봐서 pw 값을 구하는 문제인 것 같다.
사이트에서 개발자도구를 열어보았다. asp 파일로 작성된 것을 알 수 있었다.
※ ASP(Active Server Page)
- 웹 프로그래밍 할 수 있도록 해 주는 서버에서 동작하는 페이지로써 기존의 HTML 페이지와는 상당히 다른 동적인 구성을 가질 수 있게 해 준다.
- 서버 내에서 ASP를 해석하는 특정 처리를 한 후, 그 처리 결과를 html태그로 번역하여 형식을 바꾼 뒤, 만들어진 페이지를 새로 사용자의 브라우저에게 보낸다.
- html: 사용자가 다운받아 자신의 로컬 하드에 카피해놓으면, 언제라도 더블 클릭으로 브라우저에서 해석된 모습으로 확인 가능하다.
- 그러나 ASP는 웹서버를 항상 거쳐야 처리의 결과를 볼 수 있기 때문에, 로컬 하드에서 페이지를 더블클릭해 실행하고자 하면, 다운로드 화면 혹은 연결 에디터를 만나게 될 것이다.
소스코드를 해석해보겠다. 이 코드는 HTTP 요청에서 받은 문자열(str)을 처리하는 과정을 보여준다.
If not str = "" Then
str이 빈 문자열이 아닌 경우에만 아래의 코드를 실행한다.
result = Replace(str,"a","aad")
result = Replace(result,"i","in")
- Replace(str, "a", "aad"): 입력 문자열에서 모든 'a'를 'aad'로 대체한다.
- Replace(result, "i", "in"): 결과 문자열에서 모든 'i'를 'in'으로 대체한다.
※ replace() 함수: 문자열의 특정 부분을 검색하여 다른 문자열로 대체(replace)하는 함수이다.
result1 = Mid(result,2,2)
result2 = Mid(result,4,6)
- Mid(result, 2, 2): result의 두 번째 문자부터 두 글자를 추출하여 result1에 저장한다.
- Mid(result, 4, 6): result의 네 번째 문자부터 여섯 글자를 추출하여 result2에 저장한다.
※ Mid() 함수: 선택한 문자열의 지정한 위치부터 원하는 문자수만큼 문자열을 반환한다.
MID ( 추출할_문자열, 시작위치, 추출할_문자수 )
result = result1 & result2
Response.write result
result1과 result2를 결합하여 result에 저장한다. 이 최종 result 값을 HTTP 응답으로 출력한다.
If result = "admin" Then
pw = "????????"
최종 result가 "admin"과 같으면 pw 변수에 "????????"를 할당한다.
결국, result = "admin" 이 되어야한다는 말이다!
다시 거꾸로 조건들을 살펴보면 2, 3번째 문자(=result1)가 ad, 4번째부터의 문자(=result2)가 min이 되어야 한다.
모든 a는 add로 대체되므로 일단 a가 첫문자로 있어야한다. 일단 aad까지 완성.
또한 모든 i는 in으로 대체되므로 i도 필요하다.
따라서 ami를 입력하면, "aadmin"이 되므로 result1 = "ad", result2 = "min"이 되어 pw를 얻을 수 있다!
ami를 입력해주면
문제 풀이에 성공하였다!
'2024 SWLUG > Dreamhack' 카테고리의 다른 글
2주차_CTF 문제풀이(1) - error based sql injection (0) | 2024.10.02 |
---|---|
1주차_CTF 문제풀이 - CProxy: Inject (0) | 2024.09.24 |
7주차_CTF 문제풀이(1) - Type c-j (0) | 2024.05.25 |
6주차_CTF 문제풀이(2) - easy-login (0) | 2024.05.22 |
6주차_CTF 문제풀이(1) - web-misconf-1 (0) | 2024.05.22 |