해킹

    퍼징(fuzzing) 환경 구축하기

    "fuzzing against machine" 도서를 읽고 정리한 내용입니다. 퍼징의 기본 개념 QEMU(Quick Emulator)를 사용하는 이유는, 펌웨어를 가지고 에뮬레이팅하면 실제로 기기를 가지고 있지 않아도 테스트할 수 있기 때문이다. 플레이스테이션이나 닌텐도 등 비싼 기기를 보유하지 않아도 에뮬레이터를 통해 PC에서 동작할 수 있는 것처럼 말이다. 취약점에는 버퍼 오버플로우, 포맷 스트링 취약점, 힙 오버플로우 등이 있다. 이러한 취약점을 발견하는 과정은 매우 지루(tedious)한 과정이다. 그래서 퍼저(fuzzer)라는 툴을 이용한다. 퍼저는 프로그램을 실행하고, 다른 입력값(input)을 넣으면서 프로그램의 충돌(crash)을 관찰(monitoring)한다. 퍼징의 성과를 향상하기 위해..

    wargame.kr 3번. QR CODE PUZZLE

    시작하면 랜덤하게 생성된 QR코드 퍼즐 조각들이 있다. 각 조각을 더블클릭하면 빈 공간으로 움직인다. 개발자 도구로 보면 각각 번호가 매겨져 있다. 이걸 보고 하나하나 맞춰야 하나 싶었는데, 스크립트를 보면 unescape 함수가 있다. 웹을 통해서 데이터를 전송할 때 특정 문자들은 특수한 기능으로 사용되는데, 이로 인해 생기는 문제를 해결하기 위한 방법이 이스케이핑이다. unescape는 escape로 이스케이핑 된 문자열을 되돌린다. 참고: opentutorials.org/module/2/2824 콘솔창에 함수를 복사해 붙이면 주소를 얻을 수 있다. 소스 탭으로 가 보면 img 폴더 내에 qr.png 파일이 있다. 완성된 qr코드 이미지이다. 이 파일 주소를 복사한다. qr code decoder라 ..

    wargame.kr 2번. flee button

    시작하면 검은 배경에 click me!라는 버튼이 마우스를 피해 돌아다닌다. 개발자 도구에서 이 버튼이 있는 div 태그를 찾아서 style을 보자. position: absolute를 해제하면 click me! 버튼이 고정된 위치에 있게 된다. 누르면 Flag를 얻을 수 있다.

    wargame.kr 1번. already got

    시작하면 새 페이지가 열리고 "you've already got key! :p"라는 문구가 뜬다. 답을 입력하는 공간에 "can you see HTTP Response header?"라는 힌트가 있었으니 개발자 도구를 열어 네트워크 탭을 열어보자. 네트워크 탭을 열고 새로고침을 해 보면 already_got이란 이름의 문서가 있다. 이 문서를 열면 Response Headers에 FLAG값이 있다.