처음에는 앞선 문제처럼 전치암호로 생각하며 


'Jhll'이 'Pass'라 생각하고 문제를 풀었습니다...


abcdefghijklmnopqrstuvwxyz


'J'와 'P'는 -6글자 차이 (원문을 기준으로)

'h'와 'a'는 +7글자 차이

'l'과 's'는 -7글자 차이

로 정해진 글자수 차이가 아니라 앞선 방법처럼 할 수 없었습니다.



무슨 알고리즘이 있을꺼같아서 계속 고민했지만..... 알아내지 못했고.. ㅜㅜ


하나하나 대응되는 값을 찾기로 생각했습니다.


확실하게 얻을 수 있는 정보부터 차례대로 알아내서 결과를 도출 하면 될 것같습니다.


① 'Jhll' == 'Pass'

a

h

g


m


s

l

y


b


h


n


t


z


c


i


o


u




d


j


p

j

v




e


k


q


w




f


l


r

x




(암호 전/후)


② 'cl' == 'is'

'l' 이 's'로 확정된 이상 'c' 는 'a'아니면 'i'라고 생각한다.

보통 영어 'is'를 많이쓰기에 'is'라고 생각하고 진행해봅니다.

a

h

g


m


s

l

y


b


h


n


t


z


c


i

c

o


u




d


j


p

j

v




e


k


q


w




f


l


r


x





③ 'Gdcl' = 'This'

'cl'이 'is'라고 생각하니 'Gd'는 문장 맨앞에 온다는걸 생각하면 'This'가 맞을 것 같다.

a

h

g


m


s

l

y


b


h

d

n


t

g

z


c


i

c

o


u




d


j


p

j

v




e


k


q


w




f


l


r


x





지금까지 바꾼 문자열은 다음과 같이 된다.

Hi, this is a sirisan ikqa tz sqwqs tuz. This tirq qayh sqttqn is assiomqk a spqyiaiqk nqsatizmship uith amzthqn sqttqn. Pass: ihawqaniqmks


④ 'nqsatizmship' == 'relationship'

솔직히 지금부터는 감으로 찍는게 많았습니다.

'ship'이라는 글자를보고 왠지 'relationship'일꺼라는 생각을 했고 글자수도 마침 딱 맞았습니다.

a

h

g


m


s

l

y


b


h

d

n

m

t

g

z


c


i

c

o

z

u




d


j


p

j

v




e

q

k


q


w




f


l

s

r

n

x





Hi, this is a sirilar ikea to lewel tuo. This tire eayh letter is assionek a speyiaiek relationship uith another letter. Pass: ihawearienkl


점점 눈에 맞아가는 글자들이 보입니다. relationship이 맞는거라고 생각됩니다.


⑤ 'uith' == 'with' / 'eayh' == 'each' / 'tuo' == 'two' / 'lewel' == 'level'

a

h

g


m


s

l

y


b


h

d

n

m

t

g

z


c

y

i

c

o

z

u




d


j


p

j

v

w



e

q

k


q


w

u



f


l

s

r

n

x





Hi, this is a sirilar ikea to level two. This tire each letter is assionek a speciaiek relationship with another letter. Pass: ihavearienkl


⑥ 'assionek' 중에 'o'와 'k'만 바뀌지 않았다.  사전에 검색해보니 'assigned'가 제일 알맞은 단어인것같다.

'sirilar' 중에도 첫번째 'r'만 바뀌지 않았으며. 사전 검색하니 'similar'가 제일 알맞는 단어인것같다.

'speciaiek' 중에도 'k'와 'a'만 바뀌지 않았으며, 'k'는 'd'로 위에서 알았고, 사전 검색하니 'specified'가 제일 알맞다.

a

h

g

o

m

r

s

l

y


b


h

d

n

m

t

g

z


c

y

i

c

o

z

u




d

k

j


p

j

v

w



e

q

k


q


w

u



f

a

l

s

r

n

x





Hi, this is a similar idea to level two. This tire each letter is assigned a specified relationship with another letter. Pass: ihavefriends



야매로 풀은건지... 진짜 제대로된 방법인지는 모르겠는데 일단은.. 해결했습니다. 시간은 오래걸리네요.


python으로 replace하다보면 예를들어 'l'은 's'이고 's'는 'l'이다보니 결국 한 문자로 되서 더 고생한거같아요..ㅜㅜ


다 풀어놓고 다른 사람들은 어떻게 풀었나 봤었는데 크랙 해주는 사이트도 있었네요...

이게 진짜 알고리즘이 없고 이런식으로 뒤죽박죽 만든건지 아니면 알고리즘이 있는데 못찾는건지는 모르겠지만....


혹시나 알고리즘을 발견하신 분은 알려주세요 ㅜㅜ..

'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Coding level1  (0) 2018.08.28
[HackThis] Crypt level5  (0) 2018.08.26
[HackThis] Crypt level3  (0) 2018.08.25
[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25

'-'와 '.' 만으로 이루어져 있는 것을 보니 모스부호가 바로 생각납니다.


모스부호에는 '/'가 없으니 아마 띄어쓰기를 나타난 것이라고 보여집니다.



python에는 사전기능이 있습니다. 


간단하게 필요한 영문자와 특수문자를 사전으로 정의해놓고 해당하는 값으로 바꿔주면 알맞은 문자열이 나옵니다.


(모스부호는 검색하면 나옵니다)


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
payload = '.... .. --..-- / - .... .- -. -.- ... / - --- / ... .- -- ..- . .-.. / '
payload += '-- --- .-. ... . / - .... . / - .-. .- -. ... -- .. ... ... .. --- -. / '
payload += '--- ..-. / - . .-.. . --. .-. .- .--. .... .. -.-. / .. -. ..-. --- .-. -- .- - .. --- -. / '
payload += '.-- .- ... / ... - .- -. -.. .- .-. -.. .. --.. . -.. .-.-.- / .... . / ..- ... . -.. / '
payload += '-.. --- - ... / .- -. -.. / -.. .- ... .... . ... / - --- / -.-. .-. . .- - . / .- / '
payload += '... - .- -. -.. .- .-. -.. / .-- .- -.-- / --- ..-. / -.-. --- -- -- ..- -. .. -.-. .- - .. --- -. --..-- / '
payload += '.... . / .... .- ... / .... . .-.. .--. . -.. / -.-- --- ..- / - --- -.. .- -.-- / - --- / --. . - / - .... . / '
payload += '.--. .- ... ... ---... / - .... .- -. -.- -.-- --- ..- ... .. .-.'

payload = payload.split( )
 
 
dic = { '.-'   : 'A',
    '-...' : 'B',
    '-.-.' : 'C',
    '-..'  : 'D',
    '.'    : 'E',
    '..-.' : 'F',
    '--.'  : 'G',
    '....' : 'H',
    '..'   : 'I',
    '.---' : 'J',
        '-.-'  : 'K',
    '.-..' : 'L',
    '--'   : 'M',
    '-.'   : 'N',
    '---'  : 'O',
    '.--.' : 'P',
    '--.-' : 'Q',
    '.-.'  : 'R',
    '...'  : 'S',
    '-'    : 'T',
    '..-'  : 'U',
    '...-' : 'V',
    '.--'  : 'W',
    '-..-' : 'X',
    '-.--' : 'Y',
    '--..' : 'Z',
        '.-.-.-' : '.',
        '--..--' : ',',
        '-.--.'  : '(',
        '-.--.-' : ')',
        '-..-.'  : '?',
        '---...' : ':'}
 
result=''
for index in range(len(payload)):
    if payload[index] != '/':
        result += dic[payload[index]]
    else:
        result += ' '
 
print(result)
 
cs



다음과 같이 문자열로 바뀌어서 나오게 됩니다.


처음에 대문자로 입력해서 안되서 소문자로 입력하니 인증이 되었습니다^^



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level5  (0) 2018.08.26
[HackThis] Crypt level4  (0) 2018.08.26
[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24

1번 문제와는 다르게 그래도 진짜 암호문제 같습니다.


어떻게 암호가 된건지 잘 봐봅니다.


암호학을 배우셨다면 전치암호라고 들어보셨을 겁니다.


정해진 값만큼 다음 문자로 바꿔서 표기하는 것인데


예를들어 hack이라는 문자를 3번 옆으로 옮긴다고 하면


abcdefghijklnmopqrstuvwxyz 를 보면서


'h'를 옆으로 3번 옮긴 값인 'k'

'a'를 옆으로 3번 옮긴 값인 'd'

'c'를 옆으로 3번 옮긴 값인 'f'

'k'를 옆으로 3번 옮긴 값인 'm'


이렇게 되어 'hack'이라는 문자는 'kdfm'라는 문자로 변경되어 쉽게 알아보지 못하게 됩니다.



이 문제도 동일한 방법으로 되어있습니다.


먼저 접근을 어떻게 하냐면 확실히 알 수 있는 문자가 있다면 그 문자를 비교하면 됩니다.


1번 문제에서 Password를 표기할 때 'pass'라고 표기했습니다.


위에 'teww'를 보시면 뒤에 'ww'가 연속된 것부터 왠지 원래 문자가 'pass' 일것 같다는 생각이 듭니다.


't'가 원래는 'p' 였을테니 abcdefghijklnmopqrstuvwxyz 보시는거 같이 p를 오른쪽으로 4번 이동한 값입니다.


그럼 하나하나 다 하기는 힘드니 Python 코드로 한번에 변경해 보겠습니다.


ascii 값으로 +4 되어있던 것이니 -4를 시켜주면 원래 문자로 돌아옵니다.


(ascii code 기반으로 짰더니.. 대문자랑 특수문자가 걸리긴하는데 귀찮아서 답만 체크했습니다.)




'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level4  (0) 2018.08.26
[HackThis] Crypt level3  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24

암호 문제입니다.


다음 문장에서 Password를 찾으라고 합니다.


뒤집어져 있긴하지만 맨앞에 눈에 띄게 적혀있으니... 넘어갑니다..

(1번이라 너무 쉽네요 ㅜ.. 놀림받은 기분..)



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level3  (0) 2018.08.25
[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24

SQL injection 문제입니다.


모든 사용자 계정에 대한 엑세스를 확보하라고 합니다.


그렇다면 관리자로 로그인하라는 말일꺼라고 생각합니다.



Username: admin' or 1=1#

Password: 1

로 입력해보니 친절하게도 SQL문을 그대로 보여줍니다. 


Syntax error 난걸 보니 구문이 틀리다는건데 필터링 되는거도 없고 

주석처리한게 문제가 된거같아 바꿔보겠습니다.



'#' 대신 '--'를 사용하니 깔끔하게 성공합니다. 


오라클DB를 사용하는지 '#' 은 안먹히나보네요..


admin이라는 글자를 안쓰고 [' or 1=1-- ]을 사용해도 충분합니다.


(희한한건 '--' 을 사용하려면 뒤에 공백이나 문자를 넣어야는데 없어도 되는걸 보면 해당 문자만 들어와도 성공이라고 판단하나 봅니다..)



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24

시작과 동시에 alert창이 나오고 Password를 입력하라고 합니다.


정보가 없으니 그냥 확인을 누르면 https://www.hackthis.co.uk/levels/ 페이지로 가게 됩니다..


다시해봐도 그렇네요..



그러다가 level4에서 소스코드 보기를 했던 방법을 적용해서 url을 다음과 같이 바꾸고 

소스를 분석해보기로 했습니다.


시작하자마자 alert창이 나왔다는건 javascript로 alert구문을 썼다고 생각하여 

<script>와 alert로 검색을 해봐도 모든 페이지에 나와있는 저 <script>만 존재하고 alert문은 없습니다.



여기서 진짜 뭔지 몰라서 많이 헤맸는데 level4 소스코드와 level5의 소스코드 중 다른 부분이 있을꺼라고 생각하여 비교를 해봤습니다. 거의 모든 부분이 동일했습니다.


분명 javascript가 발생했다면 어딘가에 해당하는 구문이 적혀있어야는데 이곳에 존재하지 않는다면

다른 javascript 파일 속에 적혀있다는 생각을 했습니다.


그러던 중 맨 아래 부분의 

<script type='text/javascript' src='/files/js/min/extra_48d468a93b.js?1510507123'></script>

부분이 다른 javascript를 불러오는 구문이며 level4와 다르다는 것을 알게되었습니다.



해당 파일을 열어보고 Password를 검색해보니 맨 아래부분의 한개 발견되었고

Password로 입력하는 값은 'p' 변수로 입력되고 'd'변수 값과 동일하면 해결되는 것 같습니다.



'd' 변수 값을 알아내고자 앞의 'a' 변수부터 복사해 개발자도구로 확인해봅니다.



다음과 같이 'd' 변수를 알아낼 수 있으며 해당 문자열을 입력하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24

Main level5에서는 Username이라는 <select>태그와 함께


Ronald로 로그인을 하면 성공한다고 나와있습니다.


하지만 현재 <select>태그에는 Ronald가 없으니 우리는 추가를 해줘야 할 것입니다.



개발자도구를 통해서 해당 구문으로 이동하여 [Edit as HTML] 기능으로 'Ronald'를 추가해줍니다.



추가를 해주면 Username <select>태그에서 고를 수 있기고 Submit을 하면 성공합니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24

Main level5를 클릭하시면 다음과 같은 alert창에 Password를 입력하라는 메시지가 나옵니다.


아무정보도 없으니 대충 입력하고 확인을 누릅니다.



확인을 누르시면 엎드려 있는 고양이 사진과 함께 "I has a sad"라는 문구가 나옵니다.


앞전과 마찬가지로 소스코드를 확인해 봅니다.



이번에도 소스코드에 password가 대놓고 있습니다..


다시 Main level5를 들어오셔서 alert창에 해당 문자열을 입력하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24

앞에 main level 문제와 마찬가지로 소스코드에서 확인 하실 수 있습니다.



소스코드를 보니 'hidden' 타입으로 passwordfile이 있다고 합니다.


../../extras/ssap.xml 파일 속에 있는거 같습니다.


../ 가 허용되는 것을 보니 파일 다운르도 취약점을 이용한 문제로 판단됩니다.


리눅스에서 .. 는 상위 디렉터리로 가는 명령으로 홈페이지를 제작할 때 ..를 허용하면 여러가지 파일들을 안전하게 보호할 수 없습니다.




'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24

level 1,2와 마찬가지로 소스코드에서 확인할 수 있었습니다.


Hint를 보면 javascript로 사이트를 보호하는건 좋은 생각이 아니라고 합니다..



소스코드를 보시면 그대로 값이 들어가 있기떄문에 좋은 생각이 아니라고 했네요..


해당 값으로 인증하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24
[HackThis] javascript level3  (0) 2018.08.23

+ Recent posts