본문 바로가기

shayete

[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] lokihardt (2021.03.28 클리어) 오랜만에 주말에 깔짝 문제 풀 시간이 생겼다. 사실 2주 전에 한번 짬내서 풀어봤다. 그 때는 ubuntu 18.04 환경에서 문제를 분석했는데.. heap chunk 할당방식이 다른가.. 도저히 취약점을 못찾겠더라. 오늘은 lokihardt의 문제서버 환경과 동일하게 ubuntu 16.04로 바꾸어 분석해봤는데.. 취약점이 바로 보이네? 취약점이 바로 보이니까 난 이게 진짜 쉬운 문제라고 생각했는데.. 후. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 처음에는 UAF 일으켜서 Heapspray로 힙 영역을 싹 덮어버리고 type confusion 일으켜서 arraybuffer에 fakeOBJ 생성하고.. got_overwrite를 통해 free(theOBJ)를 system("/bin/sh")로 실행하려고 했다. gdb에선 개잘된.. 더보기
[Grotesque] maze 문제 난이도가 생각보다 어렵지 않고, 재밌다. 문제풀면서 뭔가.. 치트키를 입력해서 숨겨진 장소에 들어가는 기분이 들기도 하고.. 여튼 재밌다. 무슨 문제 풀지 고민되시는 분들은 이걸 꼭 풀어보길 바란다. - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이, 힌트 등이 있으니 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== 이 문제는 어셈으로만 보기에는 시간이 너무 오래걸릴 것 같아서 IDA Pro의 힘을 빌렸다. main 함수이다. read_mapfile(), maze_process(), finish_maze() 함수, clear_count 등의 변수.. 더보기
[Grotesque] maze 클리어 오늘 뭔가.. 어디도 안나가고 아무것도 안하니까, 뭐라도 풀긴 풀어야겠는데. 모든게 너무 귀찮았따. 사실 maze 문제를 열어놓고 풀까말까 하다가 꾸역꾸역 문제를 풀었는데, 풀다가 중간에 갑자기 재밌어져서 좀 집중했다. (어... 어???? 오... 문제를 이렇게 만들어놨어?? 오.... 하고 감탄하는 순간부터 집중) 문제푸는데 꾸역꾸역 5시간 정도 걸린 것 같다. 풀다가 느낀점은 문제 난이도가 Grotesque하다기보다는 정말 신박하고 재밌게 만들어놨다. 이 문제 만든 분 누구야 ㅋㅋㅋㅋㅋ 아이디어뱅크자나? 심심하신 분은 꼭 풀어보길 바란다. maze 문제풀이는 이번주 출장 기간 중에 진~~~~~~짜 시간많을 때 쓰거나, 아니면 토, 일요일(10.17 ~ 10.18)쯤 쓰도록 하겠다. 이 문제가 aeg.. 더보기
[Grotesque] aeg 추석에 할 거 없어서 pwnable.kr에 접속해서 문제를 이것저것 보다가, 점수가 높기도 하고.. 재미도 있어보여서 aeg 문제를 열어봤는데, 이게 왠걸? angr을 써볼법하게 만들어져서 너무 좋았다. 예전부터 angr 봐야지봐야지 했는데 사정으로 인해(쿠키런도 해야되고 테라리아도 해야되고 운동도 해야되고 피아노도..롤도..) 하지 못했으니, 지금 기회될 때 공부해야지 싶었다. 이 문제는 angr을 쓰면 귀찮은 작업이 다수 해결된다. (안쓰면.. ㅎㅎ 안쓰고 푸는 것도 하나의 방법이지만, 권장하진 않는다) - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이, 힌트 등이 있으니 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ===========.. 더보기
[Grotesque] aeg (2020.10.03 클리어) 추석에 맛난거 먹고 띵가띵가 놀고.. 방에서 굴러다니다가 할 게 없어서 pwnable.kr에 접속했다. 뭐풀지.. 이것저것 깔짝깔짝 보다가 aeg가 점수가 좀 높기도 하고 재밌어보여서 문제를 열어봤다. nc pwnable.kr 9005를 입력하니까, 뭔 10초 안에 페이로드를 짜서 달라는데, 그 뒤에는 수천?? 개의 문자를 주더라. 머리에 ????????? 가 수백개 떴다가 aeg의 맨 위 문장에서 base64 encoding 되어있다는 글을 보고, 바로 복호화한 후 압축을 풀어봤다. hmm.. strip 옵션이 적용됬나.. 싶다가도 plt 주소가 보이는걸 보면 그건 또 아닌 것 같고. (사실 오래되서 strip가 정확히 뭘지우는지 기억안난다) 여튼 main entry 주소가 안보이니, readelf 도.. 더보기
[Rookies] crypto1 문제 포인트만 잡고나면 쉬운데, 암호를 잘 모르는 나에게는 약간 접근하기 힘든 문제였다. 포인트 잡는데에 4시간?? 5시간?? 정도 헤맸던 것 같다. crypto1 문제는 CBC 블럭 암호의 운용방식을 잘 알아야 풀 수 있다. - 400명 이상 푼 문제는 PoC 코드를 공개하겠다. - 이 글에는 문제 풀이와 답이 있으니, 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== server.py 부터 보자. AES128_CBC(msg)함수는 client로부터 날아온 패킷을 받아와서 AES128_CBC mode로 복호화한다. (이 때 사용되는 키, IV(Initialization Vector.. 더보기
TypeError: Unicode-objects must be encoded before hashing python3에서 import hashlib의 hashlib.sha256 함수를 이용하는 중에 "TypeError: Unicode-objects must be encoded before hashing " 이런 에러가 뜨는 경우가 있는데, 이는 hashlib 사용 시 byte 형태가 필요해서 에러가 생긴다. python3의 문자열은 기본적으로 unicode이며, 문제 해결을 위해 encode('utf-8')을 붙여주면 된다. 예시코드: string = "test" hashlib.sha256(string.encode('utf-8')).hexdigest() 더보기
[Rookies] note 생각보다 어렵지 않은 문제이다. 하루 깔짝하고 풀었는데, 제일 시간이 오래걸렸던 부분은 ..문제 서버에다가 문자열 송수신하는 중에 자꾸 파이썬 EOF Error가 난다 ㅡㅡ; 내가 코드를 못짜는건지 아니면 서버가 불안정한건지 모르겠다. 문제 설명을 보면 mmap() 함수에 보안패치를 했고, ASLR 세팅을 안했다고 한다. 핵심적인 부분이니 기억해두자. 이제 문제를 보자. - 아참. 400명 이상 푼 문제는 exploit 코드 공개하겠다. - 이 글에는 문제 풀이와 답이 있으니, 실력 증진을 원하는 분들은 충분히 삽질한 후 읽어주시길 바란다. 1. 코드흐름 ==================================================== 문제의 핵심인 mmap_s 함수부터 보겠다. random.. 더보기