CODEGATE 2017 prequals - messenger Write-up

개요 CODEGATE 2017 예선 문제 messenger 에 대한 풀이 (430 point, pwnable) 풀이 message를 남기고, 지우고, 수정하고, 볼 수 있는 시스템이다. message를 남길 때는 최대 두 개까지 남길 수 있으며, 삭제하더라도 새로 쓰지 못 한다. 그리고 최대 사이즈는 32바이트이다. message를 수정할 때는 인덱스를 선택하여 해당 message를 수정할 수 있으며, 이때 사이즈도 변경할 수 있는데 변경하는 범위에는 제한이 없다. 여기서 Heap Overflow 가 발생한다. 이 서비스에 등장하는 Heap 구조는 다음과 같다. [Read More]

SwampCTF 2018 return write-up

올 초에 열렸던 SwampCTF 2018의 return 문제 라이트업입니다. 바이너리를 바로 열면 main()함수에서 바로 doBattle() 함수를 실행한다. doBattle() 함수를 보면 buf에 50바이트를 입력는다. 하지만 buf는 ebp-38(0x26)바이트에 위치하므로 doBattle()함수의 리턴 어드레스를 덮을 수 있다. 그런데 9번째 줄을 보면 ret(리턴어드레스)가 locret_8048595보다 크면 안 된다. slayTheBeast()라는 함수가 있다. 이 함수는 flag.txt를 읽어준다. doBattle()함수에서 ret를 &slayTheBeast()로 덮으면 되는데, 이 함수의 주소가 locret_8048595보다 [Read More]

Read data from web via CSS Injection

Introduction CSS Injection은 간단히 말해서 웹 페이지에 CSS를 임의로 삽입하는 방식의 공격입니다. 웹 브라우저에 따라서는 CSS를 통해 JavaScript를 실행시킬 수 있는 경우도 있어, XSS (Cross Site Scripting)으로 연계될 수도 있습니다. 사실 예전엔 고작 CSS를 삽입하는 것만으로 무슨 공격을 할 수 있나 싶었습니다만, 올 해(2018년) 초에 Harekaze CTF에서 출제된 CSS Injection 관련 문제를 풀다보니 알게 되었습니다. 바로 CSS Injection을 통해 해당 페이지 내의 값을 읽을 수 있다는 것입니다. How [Read More]

17th 동계 해킹캠프 PPAP 라이트업

Java 개발을 오랫동안 하면서 자연스레 얻었던 안티 디컴파일링 기법을 가지고 문제를 만들었었습니다! 두 번째로 해킹캠프에서 문제 출제를 해봤는데, 이번에는 제대로 출제팀에 들어가서 출제를 하게 되어서 느낌이 새로웠습니다!! 기회를 얻을 수 있게 도와주신 PoC 관계자분들과, 데몬팀 형님들에게 감사 인사를 드립니다! 라이트업은 제 블로그에 올렸습니다! 링크는 이곳 입니다! [Read More]

What is Sandbox?

몇 달전에 데몬팀 지원으로 제로콘 2018 에 다녀왔었습니다. 제로콘 2018 에서는 주로 제로데이, 원데이 취약점들에 대한 발표를 주로 봤었습니다. (아직은 모두 이해하기에는 부족한 실력을 가지고) Sandbox? 발표 중에 자주 나온 용어가 바로 Sandbox 인데, 어디서 들어봤던 용어같으면서도 확실히는 모르겠어서 찾아보게 되었습니다. 먼저 Sandbox 라는 용어 자체는 아이들을 모래밭(Sandbox) 안에서만 놀도록 하는 것이 유래가 되었다고 합니다. 이 유래 그대로 컴퓨터 보안에 적용하여, 악성 프로그램으로 의심되는 프로그램을 따로 격리된 영역 안에서 [Read More]