본문 바로가기

Wargame

[Grotesque] Starcraft 마지막으로 글 쓴 날짜가 언젠가 봤더니 작년이다. 1년 전에 쓴걸보니.. 그동안 정말 매우 많이 바빴나보다. 일하는 부서를 옮겼더니, 나랑 평생 연이 없을 줄 알았던 개발. 특히 안드로이드 플랫폼 보안 쪽을 다루며 매일 야근중이다. (살...살려주....) 현재는 잠깐 여유가 나니 문제를 풀 틈이 생겼다. 주말에 2~3시간 정도지만; 이 문제는 취약점이 금방 보였지만 exploit할 때 어떤 부분을 이용해야 할지 많이 고민했다. (아무래도 가끔씩 해킹공부 하다보니 내 기술력이 점차 무뎌져가서 그런게 아닐까 ㅠㅠ) 이 문제는 내 느낌엔 1. C++ 디버깅을 체험해봐라 2. C++ 코딩 시 vtable을 잘못 사용할 경우 어떤 취약점이 발생하는가? 이 두가지를 공부시킬 목적인 듯 하다. 주말마다 짬짬히 하느.. 더보기
[Grotesque] lokihardt 오랜만에 문제를 풀었다. 그간 오랜 공백기간이 있던 것 같은데. 회사에서 이런저런 바쁜 일이 많다보니 문제 풀 시간이 잘 안났다. lokihardt 문제는 실제 lokihardt(갓정훈님)가 Microsoft Edge의 Chakra 자바스크립트 엔진에서 일으킨 취약점(CVE-2016-0191)을 기반으로 만들어졌다. 이런 류의 취약점은 실제로 자주 일어난다고 한다. 이 문제는 아마 HeapSpray 기법을 학습해보라는 의도로 만들어진 듯 하다. 이틀간 문제 푸는동안 많은 공부가 되었다. - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이, 힌트 등이 있으니 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드 흐름 ======================.. 더보기
[Grotesque] maze 문제 난이도가 생각보다 어렵지 않고, 재밌다. 문제풀면서 뭔가.. 치트키를 입력해서 숨겨진 장소에 들어가는 기분이 들기도 하고.. 여튼 재밌다. 무슨 문제 풀지 고민되시는 분들은 이걸 꼭 풀어보길 바란다. - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이, 힌트 등이 있으니 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== 이 문제는 어셈으로만 보기에는 시간이 너무 오래걸릴 것 같아서 IDA Pro의 힘을 빌렸다. main 함수이다. read_mapfile(), maze_process(), finish_maze() 함수, clear_count 등의 변수.. 더보기
[Grotesque] aeg 추석에 할 거 없어서 pwnable.kr에 접속해서 문제를 이것저것 보다가, 점수가 높기도 하고.. 재미도 있어보여서 aeg 문제를 열어봤는데, 이게 왠걸? angr을 써볼법하게 만들어져서 너무 좋았다. 예전부터 angr 봐야지봐야지 했는데 사정으로 인해(쿠키런도 해야되고 테라리아도 해야되고 운동도 해야되고 피아노도..롤도..) 하지 못했으니, 지금 기회될 때 공부해야지 싶었다. 이 문제는 angr을 쓰면 귀찮은 작업이 다수 해결된다. (안쓰면.. ㅎㅎ 안쓰고 푸는 것도 하나의 방법이지만, 권장하진 않는다) - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이, 힌트 등이 있으니 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ===========.. 더보기
[Rookies] crypto1 문제 포인트만 잡고나면 쉬운데, 암호를 잘 모르는 나에게는 약간 접근하기 힘든 문제였다. 포인트 잡는데에 4시간?? 5시간?? 정도 헤맸던 것 같다. crypto1 문제는 CBC 블럭 암호의 운용방식을 잘 알아야 풀 수 있다. - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이와 답이 있으니, 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== server.py 부터 보자. AES128_CBC(msg)함수는 client로부터 날아온 패킷을 받아와서 AES128_CBC mode로 복호화한다. (이 때 사용되는 키, IV(Initialization Vector.. 더보기
[Rookies] note 생각보다 어렵지 않은 문제이다. 하루 깔짝하고 풀었는데, 제일 시간이 오래걸렸던 부분은 ..문제 서버에다가 문자열 송수신하는 중에 자꾸 파이썬 EOF Error가 난다 ㅡㅡ; 내가 코드를 못짜는건지 아니면 서버가 불안정한건지 모르겠다. 문제 설명을 보면 mmap() 함수에 보안패치를 했고, ASLR 세팅을 안했다고 한다. 핵심적인 부분이니 기억해두자. 이제 문제를 보자. - 아참. 400명 이상 푼 문제는 exploit 코드 공개하겠다. - 이 글에는 문제 풀이와 답이 있으니, 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== 문제의 핵심인 mmap_s 함수부터 보겠다. random.. 더보기
[Toddler] fd 요즘 플스4 파이널판타지7 리메이크 즐긴다고 문제를 안 풀고 있는데; 뭐라도 써야지 싶어서 쉬운 문제를 풀어봤다. (파이널판타지7 개꿀잼 ㅜㅠㅠㅠ) 너무 쉽다.. 무려 29458명이 푼 문제이다. 와우! 이거 못풀면 해킹은 꿈도 꾸지 말라는 것 같다. 1. 코드흐름 ==================================================== 단순하다. 1. argv 값을 하나라도 넣어주지 않았다면 "pass argv[1] a number"가 출력된후 프로그램이 종료된다. 2. argv[1]에 입력한 값을 정수로 바꾼후 - 0x1234 한 뒤 fd에 넣는다. 3. read 함수를 통해 buf 배열에 우리가 입력한 값을 넣어준다. 4. buf에 들어간 값과 LETMEWIN을 비교한 후, 값.. 더보기
[Grotesque] asg 쓸까말까 고민하다가.. exploit 코드 전체는 공개안하더라도, 일부분 공개하면서 설명하는건 괜찮지 않을까?? 하고 글을 쓴다. Write up 작성 목적은 pwnable.kr 점수 올리라는게 아닌, 순수 방문자의 공부에 도움이 되도록 방향을 잡아주기 위함이다. 이 글을 시작으로 write up 작성 기준, 틀 등을 마련하여 향후 관련 게시글에도 이를 적용할 수 있도록 잘 써야겠다 싶다. ========================================================================================== 글을 시작하기에 앞서 당부 드린다. 이 글은 수많은 힌트, 풀이 방법이 포함되어 있으므로, 본인의 실력 증진을 원한다면 삽질을 충분히 한 뒤에 글을 읽어주길.. 더보기
[Toddler] asm 회사간 후로 일적응하고 논문쓰고 웨이트 트레이닝하고 책보고.. 정신없이 보내다가, 요즘 여유가 생겼다. (전부 코로나 덕분) 논문은 최근에 작성 끝났구.. 운동은 반강제로 못하구.. 집컴은 거의 9년된 데스크탑이라 롤이 잘 안돌아간다 ^^ 여러가지 사정으로 주말에 시간이 꽤 많이 생겼는데, 생각날 때마다 wargame 풀면서 놀기로 다짐했다. 먼저 시작은 pwnable.kr. 여기 사이트는 정말 친절하게도 시스템해킹을 배우려는 초보, 중수 해커들에게 다양한 해킹 기술을 습득하도록 길을 알려준다. 무슨 느낌이냐면.. '넌 이걸 풀기 위해 삽질해야해. 겁나게 많이. 답을 꽁꽁 숨겨놨으니 알아서 찾아봐' 가 아니라 '넌 이걸 풀기 위해 삽질해야 해. 근데 어떻게 풀지 모르겠어?? 그런 너를 위해 내가 문제 중.. 더보기
[Lv.2] Gremlin Gate에 이어, Gremlin을 풀이합니다. Login : gremlinpass : hello bof world gremlin 환경에 주어진 cobolt.c 코드입니다. 1번과 다른점은, 버퍼(배열)가 작네요. 이게 의미하는 건 기본적으로 redhat에서 동작하는 system("/bin/sh") 쉘코드가 24바이트인데 이걸 다 넣지 못한다는 거에요. 즉, 버퍼에 쉘코드를 삽입하는 방법은 쓰지 못하게 되었습니다. 하지만, 이 redhat 환경에서는 아무런 보호기법이 걸려있지 않기 때문에 스택의 어느곳이든 값을 넣을수만 있다면 쉘코드 실행이 가능합니다. 가령, argv[] 나 환경변수 영역에 값을 넣어도 말이지요. (이 두 군데는 저희들이 임의로 값을 input할 수 있는 곳이고 스택의 주소값이 바뀌지 않.. 더보기