목록Wargame Writeups (64)
White Security
wargame.kr 사이트의 여덟번째 문제입니다. 이 DB는 어떤 종류일까요? 유저 이름과 DB간의 상관관계를 찾아봅시다. 링크에 접속하니 위와 같은 로그인 폼을 확인할 수 있었습니다.user에 posix라고 입력하고 로그인 해 보겠습니다. 위와 같은 방명록 형식으로 텍스트 저장을 할 수 있습니다.posix.tistory.com 이라고 입력하여 저장해본 결과, 별 문제없이 올라가네요. 각종 특수문자들을 입력해 보았습니다..어떤 이유에서 인지는 모르겠지만, 홀수개의 작은 따옴표는 입력이 되지 않습니다.다시 로그인 화면으로 돌아와서admin계정으로 로그인을 해 보겠습니다. 이런, 당연하게도 막혀있군요! 페이지 소스를 확인해 본 결과, 자바스크립트를 통해 블록하고 있었습니다. burpsuite 프록시를 통해 ..
wargame.kr 사이트의 일곱번째 문제입니다. php의 md5 해싱함수 사용예시를 보여주고 있는데뒷쪽의 true 인자가 이번 문제의 요점입니다. 링크에 접속하면 한개의 입력 폼이 보입니다. 소스를 확인하면 md5_password 데이터베이스의admin_password 테이블에서 password가 md5 해싱된 전달값과 동일한 요소를 질의하고만약 존재한다면 Key가 출력하도록 되어있습니다. 앞서 소개했던 php의 md5 함수 두번째 인자는 해싱 결과가 바이너리 형식 문자열로 출력되도록 하는데요. 예시로단어 [ apple ] 를 해싱하면 raw_output apple false 1f3870be274f6c49b3e31a0c6728957f true 8p�'OlI�� g(� 만약 해싱한 결과에 sql inje..
wargame.kr 사이트의 여섯번째 문제입니다. 자바스크립트 게임입니다. 부정 프로그램 방어를 우회하여 클리어 할 수 있나요? 게임에서 사망시 31337 포인트를 모아야 한다는 안내가 보입니다. 페이지 소스를 살펴보면packer 를 통해 난독화된 자바스크립트 소스를 볼 수 있습니다. xssor.io의 unpacker을 통해변환시키고 해석해보니 위의 _0x8618x6 라는 이름이 변수가 점수를 의미하는 것 같네요. burp proxy를 통해 응답 페이지를 변조하여초기 점수값을 99999로 바꾸었습니다. 99999 점수로 시작했고 사망시에 Key를 획득할 수 있었습니다.
wargame.kr 사이트의 다섯번째 문제입니다. 이건 프로그래밍 언어예요. 이 소스코드를 읽을 수 있나요? 링크에 접속하면 ws확장자명의 파일 링크를 확인할 수 있습니다. 파일을 다운받아 내용을 확인해 보니빈화면만 수십 줄 보이네요. 파일 내용을 16진수로 변환하면 확인해 보면[ 0x09, 0x0a, 0x20 ] 만으로 구성되었다는걸 확인할 수 있는데( ASCII코드를 기준으로 하여 순서대로 [ 수평 탭, 개행 문자, 공백 ] ) 처음 봤을때 혹시 삼진수로 변환하여 해석하는 것이 아닐까킹리적 갓심을 발휘해 보았지만 당연히 아니었다. ^^;; whitespace 라는 마이너한 프로그래밍 언어 소스 코드였고온라인 컴파일러에 넣어보니 Key를 얻어낼 수 있었습니다.
wargame.kr 사이트의 네번째 문제입니다. 계정을 정지당했어요. 우회해서 도와주실 수 있나요? 정지당한 계정정보를 이용해 로그인을 하는것이 문제의 목표입니다. 링크에 접속하면 위와 같은 로그인 화면을 확인할 수 있고아래에는 페이지 소스를 확인하는 링크가 존재합니다. login_filtering 데이터베이스의 user 테이블의 정보를 이용해우리가 입력한 아이디/비밀번호 정보와 일치되는 정보가 있으면 인증이 성공하며 맨 하단에 주석으로 정지된 계정 두개가 보입니다. 제공된 정지아이디로 로그인을 시도하면에러메시지를 볼 수 있습니다. Mysql은 where절에서 대소문자를 구분하지 않는데요. 따라서 [ guest/guest ] 계정을[ Guest/guest ] 와 같이대소문자를 바꿔 로그인을 시도하면 로그..
wargame.kr 사이트의 세번째 문제입니다. 자바스크립트 퍼즐 문제입니다. 재미있게 하세요자바스크립트 문제라는 것을 알 수 있네요. 링크에 접속하면 위와 같은 고전 게임이 등장합니다. 소스를 확인해보면 jquery 구문으로$('#join_img').attr('src',unescape('.%2f%69%6d%67%2f%71%72%2e%70%6e%67'));이미지의 src속성 지정하고 있네요. 아해 내용들은 해당 이미지를 가지고서 게임을 구성하는 내용으로 보입니다. 해당 주소를 URI 디코딩 해 보면./img/qr.png 가 이미지의 주소라는 것을 알 수 있습니다. 해당 이미지 주소로 들어가보면위와 같은 QR코드를 확인할 수 있네요. QR코드를 해석하니 주소 GET! 들어가면 플래그를 확인할 수 있습니다.
wargame.kr 사이트의 두번째 문제입니다. 버튼을 클릭해보세요!도저히 잡을 수가 없네요! 사이트에 접속하면 위처럼버튼이 하나 보이고마우스 주위를 빙글빙글 돌아다닙니다.. 소스를 확인해보면 URI 인코딩이 적용된 문자들이사용자 함수 unescape_blue14라는 함수를 통해 변환되고eval 함수로 실행되네요. 내부 내용을 디코딩 해 보았지만도통 모르겠습니다. 실행 결과물을 확인해 보니onclick 이벤트 발생시에?key=7ac6 인자가 추가하도록 되었군요. 주소에 ?key=7ac6를 추가하니플래그를 획득할 수 있었습니다.