본문 바로가기

SWLUG/CTF

[CTF/ 써니나타스] Web -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

 

 

 

 

문제 확인

 

사이트에 접속하면 아래와 같은 화면을 확인할 수 있다.

해당 코드를 보고 빈칸에 str을 입력한 후 <Check>를 눌렀을 때 정답일 경우, <Authkey>를 획득할 수 있는 것 같다.

 

 

 

 

 

문제 풀이

 

우선 저 코드를 간단히 분석해보면

Request()를 통해 사용자가 입력한 str를 가져오고 그게 공백이 아니면

Replace()를 통해서 'a'를 'aad'로 바꿔주고, 'i'를 'in'으로 바꿔준 후 result에 저장해준다.

Mid()를 통해 2,3번째 문자를 result1에 저장해주고, 4번째부터 6자리를 result2에 저장해준다.

&연산자를 통해 result1과 result2를 합하여 result에 저장해준다.

만약 여기서 result가 "admin"일 경우, pw를 획득할 수 있다.

 

 

지정된 문자열 중, 사용자가 원하는 위치에서부터 위치까지의 문자열을 가지고 오는 함수 

Mid( 사용할 문자열을 기입하는 인수(String), 문자열을 가지고 오기 시작할 지점(Position), 가져올 길이(Length))

 

 

예를 들어, str이 'admin'일 경우 'a'는 'aad', 'i'는 'in'이 되어 result에는 "aaddminn"이 저장된다.

result1 = 'ad', result2 = 'dminn'이 되어 result에 'addminn'이 저장된다. 즉, pw를 획득할 수 없다.

 

그럼 거꾸로 admin이 나올 수 있도록 생각을 해보았다.

2,3번째 문자(=result1)가 ad, 4번째부터의 문자(=result2)가 min이 되어야 한다.

-> ami를 입력하면, aadmin이 되므로 result1 = 'ad', result2 = 'min'이 된다.

따라서 아래와 같이 입력하였다.

 

 

 

 

 

 

 

 

키를 획득하였다 *^^*

 

 

 

 

 

 

 

여기서 끝인 게 좀 이상한 것 같아서 찾아보니... 우선 main페이지에서 회원가입을 해주고

Auth 페이지에 획득한 Authkey를 입력해주면 된다.

 

 

 

성공이다!

 

 

 

 

 

 

<참고>

 

[MYSQL] MID/ SUBSTRING/ SUBSTR 함수 - 문자열 일부 가져오기

MID/ SUBSTRING/ SUBSTR 함수 이 3가지 함수들은 MYSQL에서 문자열의 일부분을 가지고 오는 함수들입니다. 다른 함수 같지만, 모두 동일한 역할을 수행하고 사용법 또한 동일합니다. MID = SUBSTR = SUBSTRING MI

bramhyun.tistory.com

'SWLUG > CTF' 카테고리의 다른 글

[WebHack][WebGoat] 환경세팅 & Hijack a session  (1) 2024.09.16
[CTF/ Dreamhack] Type c-j  (0) 2024.05.23
[CTF/Dreamhack] easy-login  (0) 2024.05.21
[CTF/Dreamhack] web-misconf-1  (0) 2024.05.17
[CTF/Dreamhack] simple-web-request  (0) 2024.05.11