목록Wargame Writeups/wargame.kr (26)
White Security
wargame.kr 사이트의 19번째 문제입니다. "Blind SQL Injection 문제. 아스키 코드를 날짜로 바꾸어보세요." 링크에 접속하면 접속자의 아이피가 게시판에 기록됩니다. 상단에 admin login 링크가 눈에 띄네요. 링크를 따라 들어가면 로그인 페이지가 나옵니다. 지금 할 수 있는 것은 없네요. 다시 메인페이지로 돌아와 테이블을 클릭해보면, chk.php 주소로 들어갈 수 있습니다. IP 로그가 기록된 시간이 나오네요. 메인 페이지의 소스를 확인해보니 hidden으로 숨겨진 요소가 있습니다. 자바스크립트를 이용해서 게시판을 클릭하면, 선택한 IP의 인덱스를 idx value로 넣어 post 요청을 하도록 되어 있습니다. curl을 이용해 idx값을 바꾸어가며 시도해보니 올바르지 않은..
wargame.kr 사이트의 18번째 문제입니다. "간단한 Union SQL Injection 문제입니다. 아마 스크립트를 써야 할거예요." 링크에 접속하면 4개의 게시글 목록을 확인 할 수 있으며 소스도 보여줍니다. SQL Injection은 소스를 보게 되면 난이도가 급락하는 유형이지만 SQL 쿼리문에 익숙하지 않다면, 도움이 될 수도 있을 것입니다. 게시글을 확인하자 HIT(조회수) 카운트가 하나 늘었습니다. 내용 자체에는 기대할 만한 것이 없군요. 사실 이 문제는 이전 web chatting 문제와 같은 방법으로도 해결할 수 있습니다. 하지만 학습을 위한 풀이인만큼 문제의 의도를 최대한 따라가는 편이 좋겠죠? 소스를 확인해 보겠습니다. 훌륭하게도 객체 형태로 되어 있군요. 예쁜 짜임새에 기분이 좋..
wargame.kr 사이트의 17번째 문제입니다. 이번에는 별다른 힌트가 주어지지 않습니다.제목 그대로 pyc 디컴파일만 하면 해결할 수 있는 문제입니다. 링크에 접속해보면서버 시간과 함께 하단에 bughela.pyc 파일링크를 확인할 수 있습니다. 여기서 pyc 파일은파이썬에서 다른 py 파일을 임포트하면 생기는 바이트 코드 파일이며같은 파일 임포트시 속도 향상에 도움을 줍니다. 내용을 확인해 보면내부에 import me라는 텍스트가 보이네요.툴을 구해 디컴파일을 진행했습니다. 디컴파일 과정을 거쳐 살펴보니문자열을 주면 flag가 맞는지 테스트하는 함수가 포함되어 있었습니다. 또한 import 하지 않고 실행하면 바로 종료하도록 되어 있습니다.더하여 현재 시간을 이용해서 해시를 생성하고 있다는 것이 보..
wargame.kr 사이트의 16번째 문제입니다. "간단한 SQL 인젝션 문제입니다. 트래픽을 줄이기 위해서는 어떻게 해야 할까요? 개발자의 관점에서 생각해 주세요." 링크를 따라 들어가니 아이디 입력란이 있군요. posix라고 입력하고 join을 눌러보겠습니다. 로그인을 하니 채팅 프로그램이 존재합니다. 이것저것 입력해보니 대부분 정상적으로 들어가네요. 다만 #을 입력하면 #을 포함한 이후 문자들이 모두 사라집니다. 크롬 개발자 도구를 열어 로그를 살펴보니 1초 간격으로 XHR을 통해 지속적으로 데이터를 받아오고 있네요. 중간의 chatlog.php?data=posix.tistory.com 부분은 제가 데이터를 입력한 전송한 부분입니다. 페이지 소스를 열어보겠습니다. 페이지 로드가 끝난 후에 init ..
wargame.kr 사이트의 14번째 문제입니다. "32비트 응용프로그램의 정수 타입에 대해 알고있니?" 링크에 접속하니 D1, D2 이름으로두개의 값을 입력할 수 있도록 되어 있습니다. 먼저 소스를 살펴 보겠습니다. d1과 d2를 모두 int타입으로 캐스팅하여 $input1, $input2에 저장하였습니다.그리고 p7.c라는 c언어 소스를 기반으로 컴파일 하였습니다.$input1을 인자로 컴파일 된 프로그램을 실행했군요.결과값은 1이 되어서는 안됩니다.그 값이 $input2와 비교하여 같으면 Flag를 출력하도록 되어 있습니다. http://wargame.kr:8080/php_c/p7.c처음에 헤매었던 부분인데 /tmp/p7.c에 있어야 할 프로그램 소스가웹 서버에도 존재하고 있습니다. 소스를 살펴보니..
wargame.kr 사이트의 13번째 문제입니다. "PNG 파일을 복구하세요! 하지만 이게 정말 PNG 파일일까요?(스테가노그래피 문제가 아닌 포렌식 문제입니다.)" 링크에 접속하면 위와 같은 단일 폼이 존재하며code를 찾아 입력하라고 합니다. 페이지 소스를 확인해보니 너무나 깔끔하군요.이미지 파일에만 집중하면 될 것 같습니다. 배경의 pattern.png 파일을 받아 확인해보니마지막의 Japng r119 라는 부분이 눈에 띄어서 찾아 보았습니다. Japng 는 APNG 파일을 생성하는 Java 라이브러리 라는 것 같습니다.Java 5 이상 버전을 필요로 한다는데, 우리에게 필요한 내용은 아니네요. APNG에 대해서 알아 보겠습니다.기존의 움직이는 파일 포멧이었던 gif 와 비슷한 종류인 것 같군요. ..
wargame.kr 사이트의 12번째 문제 입니다. "간단한 비교 문제입니다. 힌트요? 문제 제목을 보세요 :D" 링크에 접속하면 입력값을 넣는 폼과 소스 확인용 링크가 나옵니다. 소스를 확인해보니 입력된 텍스트를 submit_check 함수를 통해 json 형식으로 전송하고 있네요.submit_check함수는 ./util.js 내에 포함되어 있지만, 중요하지 않으니 생략했습니다. json형식으로 받은 데이터를 json_decode 함수를 통해 풀어내어mixed 타입 변수로 바꾸었군요.그리고 $key와 == 연산자로 느슨한 비교를 수행하여같으면 Flag를 출력하도록 하고 있습니다. 예시로 posix 를 입력하고 제출하면json 파라미터에 URI 인코딩 된 형태로 전송됩니다. burp 프록시를 사용해 "p..
wargame.kr 사이트의 11번째 문제입니다. admin 아이디로 로그인하세요!아래 유저 테이블의 컬럼 정보가 주어진 것으로SQL injection 문제라는 것을 유추할 수 있습니다. 링크로 진입하면 로그인, 가입의 두가지 기능 페이지가 존재합니다. 먼저 로그인 버튼을 누르면 페이지 좌측 상단에위와 같이 자그마한 로그인 폼이 떠오르고적당히 입력해 보면 login failed 알림을 볼 수 있습니다. 다음으로 가입 페이지로 살펴보겠습니다.아이디와 페스워드, 두가지 정도를 입력 할 수 있네요. admin으로 가입을 시도해 보았지만,정보 메시지만 보일 뿐, 가입이 되지 않습니다. 가입 페이지 소스를 살펴 보겠습니다.자바스크립트로 아이디와 패스워드의 길이를 점검하며각 4자, 7자가 넘지 않으면 제출이 불가하..