'Wargame'에 해당되는 글 15건

  1. 2018.07.20 11. strcmp
  2. 2018.07.19 9. md5 password
  3. 2018.07.19 8. md5_compare
  4. 2018.07.19 7. fly me to the moon
  5. 2018.07.19 6. DB is really GOOD
  6. 2018.07.18 5. WTF_CODE
  7. 2018.07.18 4. login filtering
  8. 2018.07.18 3. flee button
  9. 2018.07.17 2. QR CODE PUZZLE
  10. 2018.07.17 1. already got
Wargame/wargame.kr2018. 7. 20. 14:56

문제 페이지는 다음과 같다.



소스를 보고 무슨 문제인지 알아보자.



PHP에서, strcmp 함수에 배열을 파라미터로 넘겨주면 오류와 함께 NULL로 반환한다.

(참고: http://hackability.kr/entry/PHP-strcmp-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%B8%EC%A6%9D-%EC%9A%B0%ED%9A%8C)

또한, PHP에서 ==을 사용한 느슨한 비교를 했을 때,  NULL==0이 참이 되는 것을 이용해 조건문을 참으로 만들어 줄 수 있다.



FLAG를 얻을 수 있었다. 현재 PHP 7에서도 안전한지는 자세히 모르지만 가능하면 ===를 사용해 강한 비교를 하자.



'Wargame > wargame.kr' 카테고리의 다른 글

9. md5 password  (0) 2018.07.19
8. md5_compare  (0) 2018.07.19
7. fly me to the moon  (0) 2018.07.19
6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
Posted by BinZIP
Wargame/wargame.kr2018. 7. 19. 16:55

문제 페이지에서 패스워드를 입력하라는 폼만 나온다.



소스를 봐서 어떤 문제인지 확인해봤다.



이 문제의 특이한 점은 md5 함수에 두 번째 인자로 true를 넘겨줬다는 것이다.

md5 함수에 2번째 인자로 true를 주면 raw output이 나오게 되는데, 이 output에 1' or '1 과 같은 결과가 나오도록 하는 해시 값을 찾으면 인젝션이 가능하게 된다.

(참고: http://bbolmin.tistory.com/77) 


해당하는 해시 값을 입력하고 로그인하면 FLAG를 얻을 수 있다.



'Wargame > wargame.kr' 카테고리의 다른 글

11. strcmp  (0) 2018.07.20
8. md5_compare  (0) 2018.07.19
7. fly me to the moon  (0) 2018.07.19
6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
Posted by BinZIP
Wargame/wargame.kr2018. 7. 19. 16:03

문제 페이지로 들어가면 두 값을 입력하도록 폼이 있다.



소스보기로 어떤 동작을 하는지 확인해보았다.



첫 번째 입력 창엔 알파벳만 포함하는 문자열을, 두 번째 입력 창엔 숫자만 포함하는 문자열인지 검사한다.

그리고 두 입력값을 MD5로 해시화해서, 같을 때 키 값을 얻을 수 있다.

이번 문제는 MD5의 충돌이 발생하는 하나는 알파벳으로만, 다른 하나는 숫자로만 구성된 문자열 한 쌍을 찾아야 하는 것이다.


예전에 이와 관련해 php의 md5 magic hash라는 특수 동작이 있다는 것이 생각나서 구글에 검색해보았다.

(문제와 큰 관련은 없지만 참고하시려면: https://blog.lael.be/post/1238)

검색하는 도중에 영문과 숫자로 된 두 문자열의 해시 값이 같다는 글을 찾았고, 바로 넣어보았다.



FLAG를 얻을 수 있었다.



'Wargame > wargame.kr' 카테고리의 다른 글

11. strcmp  (0) 2018.07.20
9. md5 password  (0) 2018.07.19
7. fly me to the moon  (0) 2018.07.19
6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
Posted by BinZIP
Wargame/wargame.kr2018. 7. 19. 15:26

문제 페이지로 들어가면 게임이 등장한다.



게임이 시작되면 날아오는 총알을 피하는 게임이다.

총알에 맞으면 게임오버 되며, 31337점을 내야한다고 한다.



하지만 31337점을 그냥 얻는 것은 불가능해보인다. (해보면 안다)

그래서 Paros로 지나다니는 패킷들을 살펴봤다.



게임이 끝날 때 토큰과 점수가 서버로 전송되는 것을 볼 수 있었다.

토큰은 매 번 바뀌는 것을 알 수 있었다.



Trap request로 서버로 점수가 전송될 때 점수를 31337보다 크게 수정해서 전송했다.



FLAG를 얻을 수 있었다.



'Wargame > wargame.kr' 카테고리의 다른 글

9. md5 password  (0) 2018.07.19
8. md5_compare  (0) 2018.07.19
6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
4. login filtering  (0) 2018.07.18
Posted by BinZIP
Wargame/wargame.kr2018. 7. 19. 14:51

문제 페이지로 들어가면 다음과 같이 유저 이름을 입력하고 로그인 하는 화면이 나온다.



admin으로 로그인하려고 하자 admin으로는 로그인할 수 없다고 한다.



다른 닉네임으로는 로그인이 되며, 다른 사용자들이 남겨놓은 메모를 확인할 수 있었다.



여기서, admin으로 접속하게 되면 flag 값을 얻을 수 있을 것이라 예상했다.

그렇다면, MySQL 등의 DBMS에서는 'admin'과 'admin '을 동일하게 인식하는 것을 바탕으로 'admin '을 입력해 로그인했다.



로그인에 성공한 듯 보였으나 FLAG와 관련된 어떤 것도 찾을 수 없었다.

그래서 개발자 도구로 살펴보니 'admin '로 로그인 된 것을 알 수 있었다. 즉, 'admin'과 'admin '을 다르게 인식하는 것으로 판단할 수 있었다.

그래서 SQLite 같은 DBMS를 사용하고 있음을 예상할 수 있었다. 

(참고: http://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html)


그렇다면 여기서 더 할 수 있는 것은 없다. 사용자의 이름으로 무언가를 해내는 수 밖에 없다.




여러가지 이름으로 테스트를 해보는 도중, '/'로 로그인을 하려고 하니 위와 같은 에러가 발생했다.

위 에러 메시지로, 사용자 이름과 그에 저장된 메모는 './db/wkrm_(사용자 이름).db'에 저장될 것이라고 예상할 수 있었다.

그래서 URL에 './db/wkrm_admin.db'를 이어붙이고 접속했다.



위와 같이 db 파일이 다운로드 되었다. 

이 파일을 온라인으로 확인할 수 있는 사이트에서 내용을 확인했다.


https://sqliteonline.com/




FLAG를 찾아낼 수 있었다.

'Wargame > wargame.kr' 카테고리의 다른 글

8. md5_compare  (0) 2018.07.19
7. fly me to the moon  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
4. login filtering  (0) 2018.07.18
3. flee button  (0) 2018.07.18
Posted by BinZIP
Wargame/wargame.kr2018. 7. 18. 12:55

문제 페이지에 들어가보면 다음과 같이 나온다.



아무것도 안보인다면서 소스코드를 하나 던져준다.

다운로드 받아서 서브라임으로 살펴봤다.



영문 모를 공백 문자들이 적혀있다.

.ws 확장자를 가진다 해서 구글링 해보니 whitespace라는 언어라고 한다.




whitespace 언어를 온라인으로 컴파일 할 수 있다는 사이트가 있다고 해서 코드를 복사해서 붙여넣어 실행해보았다.

http://ideone.com/



키 값을 얻을 수 있었다.

'Wargame > wargame.kr' 카테고리의 다른 글

7. fly me to the moon  (0) 2018.07.19
6. DB is really GOOD  (0) 2018.07.19
4. login filtering  (0) 2018.07.18
3. flee button  (0) 2018.07.18
2. QR CODE PUZZLE  (0) 2018.07.17
Posted by BinZIP
Wargame/wargame.kr2018. 7. 18. 12:23

문제 페이지로 들어가면 로그인 화면과 get source 링크가 나온다.



소스를 봐야 뭐라도 할 수 있으니 get source로 들어가본다.



주석에 나와있는 아이디와 비밀번호로 로그인을 시도하면 다음과 같이 틀렸다고 출력된다.




mysql_real_escape_string을 우회하는 SQL Injection 문제라고 처음에 생각했으나, 계속 생각해도 어떻다 할 방법이 생각나지 않았다.

이리저리 구글링하다 생각난 것이 PHP는 대소문자를 구분하지만 쿼리에서는 구분하지 않는다는 것이었다.

그렇다면 쿼리 결과는 대문자를 사용해도 소문자만 사용한 경우와 결과가 같을 것이다.


주석 처리된 부분에 나와있는 아이디 중 하나를 모두 대문자로 적어 로그인을 시도해 보았다.



키값이 나왔다.



'Wargame > wargame.kr' 카테고리의 다른 글

6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
3. flee button  (0) 2018.07.18
2. QR CODE PUZZLE  (0) 2018.07.17
1. already got  (0) 2018.07.17
Posted by BinZIP
Wargame/wargame.kr2018. 7. 18. 11:57

문제 페이지로 들어가보면 마우스 커서랑 닿지 않게 버튼이 날아다닌다.



클릭 못하게 계속 움직이게 설정해놓았다. 하지만 우리에게는 개발자 도구가 있다.

버튼에 해당하는 부분을 찾아준다.



클릭될 시 현재 페이지에서 '?key=391e'로 이동한다고 한다.

주소창에 그대로 붙여넣어서 들어가봤다.



키를 얻을 수 있었다.

'Wargame > wargame.kr' 카테고리의 다른 글

6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
4. login filtering  (0) 2018.07.18
2. QR CODE PUZZLE  (0) 2018.07.17
1. already got  (0) 2018.07.17
Posted by BinZIP
Wargame/wargame.kr2018. 7. 17. 15:48

문제를 시작하면 다음과 같은 화면이 나온다.




이 퍼즐을 풀라는 것 같은데 보고 있자니 머리만 아플 뿐이다.

다른 방법이 있는지 찾아보기 위해 개발자 도구로 소스를 살펴보았다.



퍼즐의 원본 파일을 찾을 수 있었다.

다운로드 받아서 QR코드를 읽어주는 사이트에 넣어 보았다.


FLAG를 줄 것 같은 주소를 얻을 수 있었다. 접속해보면 FLAG 값을 얻을 수 있다.







'Wargame > wargame.kr' 카테고리의 다른 글

6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
4. login filtering  (0) 2018.07.18
3. flee button  (0) 2018.07.18
1. already got  (0) 2018.07.17
Posted by BinZIP
Wargame/wargame.kr2018. 7. 17. 15:13

문제를 시작하면 아래와 같은 화면이 나온다.

이미 키를 받았다고 한다. 개발자 도구로 살펴봐도 별게 없는 것을 봐서, response packet에 키 값이 담겨있을 것이라 예상했다.



 FLAG를 찾을 수 있었다.



'Wargame > wargame.kr' 카테고리의 다른 글

6. DB is really GOOD  (0) 2018.07.19
5. WTF_CODE  (0) 2018.07.18
4. login filtering  (0) 2018.07.18
3. flee button  (0) 2018.07.18
2. QR CODE PUZZLE  (0) 2018.07.17
Posted by BinZIP