문제 설명을 보면 사용자명과 데이터베이스의 연관성을 찾아야 한다고 한다.

 

문제 페이지에 들어가 보면 사용자를 입력할 수 있는 로그인 창이 있다.

저기에 어떤 값을 입력하고 로그인하면 입력한 값을 사용자명으로 하는 메모창이 있다.

다시 처음 페이지로 돌아와 관리자 계정으로 예측되는 admin을 입력하면 경고창이 뜬다.

USER 입력창에 여러 특수 기호를 입력해 보던 중 / 를 넣었을 때 에러가 발생 했다.

에러 내용을 보면 ./db/wkrm_사용자명.db의 이름으로 db파일이 존재하는 것 같다.

URL에 다음과 같이 입력하였더니 wkrm_admin.db라는 db파일을 다운로드 할 수 있었다.

이 파일을 메모장으로 열어보면 하단에 플래그 위치의 경로를 알려준다

해당 경로로 들어가면 플래그를 얻을 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] md5_compare  (0) 2019.09.03
[Wargame.kr] strcmp  (0) 2019.09.02
[Wargame.kr] md5 password  (0) 2019.08.29
[Wargame.kr] fly me to the moon  (0) 2019.08.27
[Wargame.kr] WTF_CODE  (0) 2019.08.27

문제 설명을 보면 md5 함수가 나와 있다.

 

문제 페이지를 보면 password를 입력하는 입력란이 있고, 페이지 소스 코드를 볼 수 있다.

 

소스 코드를 보면 md5 함수에서 취약점이 발생한다.

md5  함수 옵션의 기본값은 false 인데, true 옵션을 사용하게 되면 해시 값을 바이너리 형식으로 반환하게 된다.

 

또한 sql에서 패스워드의 값이 '=' 의 형태로 들어가게 되면 참 으로 인식하고, php내에서는 md5 해시한 값이 바이너리 형식으로 인식하기 때문에 어떤 값을 md5 해시한 결과가 '=' 인 값을 찾아야 한다.

파이썬으로 코딩해서 찾아보면 1839431 이라는 값을 찾을 수 있다.

 

import hashlib

 

for i in range(0,1000000000):

    if b"'='" in hashlib.md5(str(i).encode()).digest():     # bytes형태로 바꿈

        print('Found: {}'.format(i))

 

찾은 값을 문제 페이지의 password 값을 입력하면 flag를 얻을 수 있다.

 

알게된 점 : php에서 md5함수의 옵션이 true로 설정되게 되면 취약점이 발생한다.

md5함수의 기본값 옵션은 false 이다. 

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] strcmp  (0) 2019.09.02
[Wargame.kr] DB is really GOOD  (0) 2019.09.02
[Wargame.kr] fly me to the moon  (0) 2019.08.27
[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25

문제 설명을 보면 자바스크립트 게임이고, 시스템을 우회하여 클리어 할 수 있냐고 물어보는 것 같다.

 

문제 페이지를 보면 어떤 게임을 할 수 있는 것 같다.

게임을 플레이 해 보면 31337점을 얻어야 게임을 클리어 할 수 있을 것 같다.

 

소스코드를 보면 다음과 같이 난독화된 자바스크립트 코드를 확인할 수 있다.

https://beautifier.io/ 라는 사이트에서 자바스크립트 코드의 난독화를 해제할 수 있다.

코드를 잘 살펴보다 보면 다음과 같이 score 값을 조작할 수 있는 부분을 발견할 수 있게 된다.

저기에 BTunnelGame['getScore']() 를 지우고 목표 점수인 31337으로 수정한후

전체 코드를 웹 페이지의 콘솔창에 입력한 후 게임을 실행하면 게임오버시 플래그를 얻을 수 있다.

 

 

알게된 점 : 자바스크립트 코드 난독화를 해제하는 사이트

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] DB is really GOOD  (0) 2019.09.02
[Wargame.kr] md5 password  (0) 2019.08.29
[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25
[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25

문제 설명을 보면 이 프로그래밍 언어를 읽을 수 있냐고 물어본다.

 

문제에 들어가면 소스코드를 얻을 수 있다.

이 파일 확장자의 ws를 검색해 보았더니 whitespace 라는 프로그래밍 언어의 확장자라고 한다.

whitespace 언어는 2003년 만우절에 발표된 언어로 이 언어에서는 공백, 탭, 개행문자만이 의미를 가진다고 한다.

이 파일을 notepad로 열어보면 공백문자만이 존재하는것을 볼 수 있다.

이 파일의 내용을 복사하여 온라인 Decode 툴을 이용하면 flag를 얻을 수 있다

온라인 디코더는 https://vii5ard.github.io/whitespace/ 사이트를 이용했다.

 

알게된 점: whitespace 언어의 존재와 이 언어가 어떤 언어인지

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] md5 password  (0) 2019.08.29
[Wargame.kr] fly me to the moon  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25
[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25
[Wargame.kr] flee button  (0) 2019.08.25

문제 설명을 보면 계정을 가지고 있는데 계정이 막혀 있어서 어떻게 필터링을 우회할 수 있는지 묻고 있다.

페이지에 들어가 보면 id와 password를 입력할 수 있는 입력창이 나오고, 페이지의 소스 확인도 할 수 있다.

소스코드의 위 부분에서 아이디가 guest 거나 blueh4g면 계정이 잠겼다고 출력하고, 저 두 계정이 아니라면 login에

성공하고, key를 출력한다.

 

소스코드의 아래 부분을 보면 guest와 blueh4g라는 계정의 password도 확인할 수 있다.

또한 위 소스코드 에서는 로그인을 위해 mysql을 사용한다.

mysql 에서는 대소문자를 구분하지않지만, php에서는 대소문자를 구분하게 되어

mysql 에서는 GUEST == guest 이지만 php 에서는 guest != GUEST이기 때문에 

id : GUEST / pw : guest를 입력하면 flag를 확인할 수 있다.

알게된 점: mysql 에서는 대소문자 구분을 하지 않는다. 이로 인한 인증 관련 취약점이 발생할 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] fly me to the moon  (0) 2019.08.27
[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25
[Wargame.kr] flee button  (0) 2019.08.25
[Wargame.kr] already_got  (0) 2019.08.25

문제 설명을 보면 자바스크립트 퍼즐 문제인 것 같다.

페이지에 들어가 보면

QR 코드가 일정하게 쪼개져 섞여 있는 것을 볼 수 있다.

크롬의 개발자 도구에 Sources 탭을 보면 원본 이미지를 확인할 수 있다.

저 이미지를 다운받아서 온라인 QRcode decoder에 넣으면 결과값으로 flag가 있을것 같은 주소를 얻을 수 있다.

https://zxing.org/ 라는 사이트에서 qrcode decode를 할 수 있다.

decode해서 나온 주소에 접속하면 flag를 얻을 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] WTF_CODE  (0) 2019.08.27
[Wargame.kr] login filtering  (0) 2019.08.25
[Wargame.kr] flee button  (0) 2019.08.25
[Wargame.kr] already_got  (0) 2019.08.25
[XSS game] Level 6  (0) 2019.08.14

문제 설명을 보면 

버튼을 클릭해라! 나는 그것을 잡을 수 없다! 라고 써져 있다.

 

페이지에 들어가보면 

key를 얻고 싶으면 click me! 라는 버튼을 클릭해야 하는 것 같은데 마우스 포인터 이동에 따라 click me! 버튼이 계속

움직여서 버튼을 클릭 할 수가 없다.

소스코드를 보면 저 버튼의 html 태그에

다음과 같이 버튼을 클릭하면 저 페이지의 get 방식으로 key=7206이 입력된 페이지로 이동함을 확인할 수 있다.

저 값을 url에 주게 되면 flag를 확인할 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] login filtering  (0) 2019.08.25
[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25
[Wargame.kr] already_got  (0) 2019.08.25
[XSS game] Level 6  (0) 2019.08.14
[XSS game] Level 5  (0) 2019.08.08

문제의 처음을 보면

다음과 같이 HTTP 응답 헤더를 볼 수 있냐고 물어보고 있다.

 

페이지에 들어가보면 you've already got key! :p 이라는 문자열 밖에 확인할 수 있는 것이 없다.

 

크롬 개발자 도구의 네트워크 탭에 가면 HTTP 응답 헤더를 확인할 수 있다.

헤더를 확인해 보면 플래그를 얻을 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] QR CODE PUZZLE  (0) 2019.08.25
[Wargame.kr] flee button  (0) 2019.08.25
[XSS game] Level 6  (0) 2019.08.14
[XSS game] Level 5  (0) 2019.08.08
[ XSS game] Level 4  (0) 2019.08.07

마지막 문제도 마찬가지로 alert창을 띄워야 한다. 

위의 코드를 보면 url의 # 뒤의 gadget.js 파일을 불러온다.

# 뒤의 내용을 바꾸면 그 내용을 출력한다.

# 뒤에 공격 코드를 주입해야 하는 것 같다.

외부 데이터를 url로 불러올 수 있는 data URL Scheme 기법을 이용하여 javascript 코드를 주입할 수 있다.

'data:text/javascript,js코드'의 형태로 javascript 코드를 실행할 수 있으며

data:text/javascript,alert(1); 을 # 뒤에 주입하면 문제가 해결된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] flee button  (0) 2019.08.25
[Wargame.kr] already_got  (0) 2019.08.25
[XSS game] Level 5  (0) 2019.08.08
[ XSS game] Level 4  (0) 2019.08.07
[XSS game] Level 3  (0) 2019.08.06

5번 문제도 alert 창을 띄워야 한다.

Sign up을 누르면 email을 입력할 수 있는 창이 보인다.

또한 url을 보면 get 방식으로 next에 confirm을 전달 받고 있다.

signup.html 파일을 보면 Next를 누르면 next의 값으로 연결되도록 링크 되어 있다.

현재 상태에서는 confirm.html로 이동할 것이다.

Next를 누를 경우 confirm.html로 이동하는 것이 아닌 alert 창을 띄우도록 next 값을 조작하여야 한다.

URL을 통해 스크립트를 전달하려면 javascript:js코드 의 형태로 전달할 수 있다.

URL의 next 값에 javascript:alert(1);을 넣고 next 를 누르면 클리어 할 수  있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[Wargame.kr] already_got  (0) 2019.08.25
[XSS game] Level 6  (0) 2019.08.14
[ XSS game] Level 4  (0) 2019.08.07
[XSS game] Level 3  (0) 2019.08.06
[XSS game] Level 2  (0) 2019.08.06

+ Recent posts