Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Network
- N0Named
- CTF
- misc
- 인코그니토
- Digital Forensics
- HackCTF
- 수학
- MySQL
- php
- 정렬
- 구현
- 사칙연산
- SuNiNaTas
- Web
- cryptography
- Forensics
- Text
- Python
- writeup
- 백준
- C
- Web Hacking
- wargame
- 써니나타스
- Incognito
- 그리디 알고리즘
- 문자열
- xcz.kr
- Database
Archives
- Today
- Total
보안을 그리다, 훈이
[Web Hacking] 써니나타스(SuNiNaTaS) 1번 문제 Write Up 본문
Web 분야 문제인 써니나타스(SuNiNaTaS) 1번을 풀어보았다.
먼저, 문제 URL이 http://suninatas.com/challenge/web01/web01.asp인 것으로 보아 asp 파일이라는 것을 파악할 수 있다.
문제에 접속하면 아래와 같은 페이지가 나온다.
간단한 코드이므로 대부분 바로 풀 수 있을거라 생각되는 워밍업 문제이다.
코드를 훑어보니 대표적으로 세 가지 함수가 존재하는 것을 확인할 수 있다.
주요 함수 | 분석 |
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하면 플래그 인증이 완료된다.
이로써, 써니나타스의 첫 문제를 클리어했다.
메인페이지 히스토리에 대문짝만하게 박힌 solved 로그.
그냥 올려봄,,^^
[써니나타스(SuNiNaTaS) 웹사이트]
'Security > Wargame' 카테고리의 다른 글
[MISC] 써니나타스(SuNiNaTaS) 13번 문제 Write Up (0) | 2021.11.25 |
---|---|
[MISC] 써니나타스(SuNiNaTaS) 12번 문제 Write Up (0) | 2021.11.22 |
[Web Hacking] 써니나타스(SuNiNaTaS) 4번 문제 Write Up (0) | 2021.11.18 |
[Web Hacking] 써니나타스(SuNiNaTaS) 3번 문제 Write Up (0) | 2021.11.16 |
[Web Hacking] 써니나타스(SuNiNaTaS) 2번 문제 Write Up (0) | 2021.11.15 |
Comments