0x.CTF
-
0x14.Defcamp - r1000x.CTF 2018. 7. 19. 15:48
0x14.Defcamp - r100 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/defcamp_r100 angr를 활용하는 방법을 익히기 위해 앵거로 풀 수 있는 문제들을 모조리 풀어보기로 하였고, 가장 먼저 선택한 바이너리이다. 메인 부분을 보니 Enter the password라는 문구가 출력되고 사용자로부터 입력을 받은 뒤에 sub_4005Fd 부분에서 어떤 연산이 수행된 뒤에 결과를 출력해준다. Sub_4006FD 부분을 보면 v3, v4, v5가 문자열로 저장되어 있는데 for 문을 돌면서 특정 루틴을 수행한다. 직접 수동으로 분석을 하면 다음과 같이 값을 가져온다. v3[0][0] - al[0] != 1 // D v3[1][0] - al[1] !..
-
0x13.ASIS 2018 - FCascasde0x.CTF 2018. 5. 2. 20:40
0x13.ASIS 2018 - FCascasde 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/FCascasde CTF를 풀 당시에는 아무리 생각해도 공격을 할 방법이 생각나지 않았는데, 알고보니 시도안한 딱 한 가지의 방법으로 익스를 진행하는 문제였다. 그 방법이 신박하여 이렇게 공부를 하여 미래의 나를 위해 라이트업을 남긴다. 메인함수는 간단하다. interaction 함수로 v3라는 인자를 넘겨준다. interaction 함수를 보면 ccloud()와 leak()이라는 함수로 들어갈 수 있는데, leak부분을 보면 main 함수에서 인자로 가져온 a1(v3)를 인자로 넘겨준다. leak()을 보니 0x128만큼을 읽어오는데 첫 8바이트가 11111111..
-
0x12.Insomni'hack 2017 - Wheel Of Robots0x.CTF 2018. 4. 23. 00:30
0x12.Insomni'hack 2017 - Wheel Of Robots 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/WheelOfRobots 아주 재미있었던 unlink 문제이다. unlink는 왠지는 모르겠는데 참 재미있다. 푸는 것도 재미있고, 조작하는 것도 재미있다 ㅋㅋ. 메인 함수는 다른 문제들과 같이 옵션마다 서로 다른 기능을 수행하는데 각각 calloc 할당, free, modify를 진행하고 4번은 사용자의 선택에 따른 그림을 출력해준다. 1번 메뉴는 calloc을 진행하는데 여기에는 2가지의 취약점이 있다. 첫 번째 취약점은 calloc의 사이즈를 20*입력 값만큼을 할당하기 때문에 다음 청크의 prev_size 부분을 오버플로우 할 수 있..
-
0x11.HITCON 2016 - SleepyHolder0x.CTF 2018. 4. 17. 09:46
0x11.HITCON 2016 - SleepyHolder 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/SleepyHolder How2Heap fastbin_dup_consolidate 취약점에 있길래 풀어보게 되었다. 메인 함수를 보니 timer가 걸려있고 메뉴는 3개가 있는 것으로 보인다. 1번 메뉴로 들어가보니 동적 영역을 할당할 수 있는데 옵션으로는 3개가 있다. 1번을 입력하게 되면 calloc(0x28) 이 되고, 2번은 calloc(4000), 3번은 calloc(400000)을 할당한다. 그리고 각각은 bss영역에 저장되며 각각에 대한 플래그가 존재한다는 사실을 알 수 있다. 2번 메뉴를 들어가보면 동적 할당 영역에 대한 할당이 되어 있으면 f..
-
0x10.HITCON 2014 - stkof0x.CTF 2018. 4. 11. 14:18
0x10.HITCON 2014 - stkof 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/stkof unsafe_unlink를 공부한 후에 처음으로 푸는 문제이다. got를 맘대로 바꿀 수 있다는 점이 참 재미있는 것 같다. 프로그램을 실행시키면 아무 내용도 출력하지 않고 입력을 받는다. 1~5를 입력하면 수행되는 case 문들을 순서대로 하나씩 들어가 분석해보자. 1번 메뉴를 들어가봤더니 사용자로부터 값을 입력받아 atol로 long 형태로 변환을 한뒤에 malloc을 해준다. 그리고 할당을 할 때마다 dword_602100 의 숫자값을 1부터 하나씩 올려준다. 그리고 동적할당 영역의 주소값이 s[++dword_602100] 에 저장된다. bss영역에 값..
-
0x09.CODEGATE2014 - Angry Doraemon0x.CTF 2018. 4. 8. 12:27
0x09.CODEGATE2014 - Angry Doraemon 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/angry_doraemon 예전부터 가지고 있던 바이너리였는데, 그 동안 풀지 않고 있다가 새벽에 할 게 없어서 풀게 되었다. 이 문제는 스택 오버플로우 문제인데, 소켓 통신 프로그램이며 스택 카나리가 존재한다. 프로그램의 메인함수 부분을 보면 소켓을 연결하는 부분이 있고, fork()를 사용하는 것으로 보아 프로그램이 실행될 때마다 사용하는 함수의 주소값이나 스택 카나리 정보가 매번 동일할 것이라는 사실을 추측할 수 있다. 여기서 확인해야할 중요한 정보는 htons를 통해 8888포트로 연결된다는 것이다. 여기서 추가적으로 파일 디스크립터를 찾는 부..
-
0x08.CODEGATE 2018 - BaskinRobins310x.CTF 2018. 3. 19. 16:48
0x08.CODEGATE 2018 - BaskinRobins31 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/baskinrobins31 코게때 팀으로 나가서 유일하게 풀었던 문제였는데, 이제야 라이트업을 작성하게 되었다. 요즘 힙 문제 푸는데에 너무 치중하여 스택 문제에 대한 라이트업을 작성해오지 않았기에 시간이 날 때마다 조금씩 작성하고자 한다. 아이다로 뜯어보자말자 ROP라는 문구를 확인할 수 있다. 대놓고 ROP로 푸세요라는 힌트를 주는 문제이다. 그냥 스택 버퍼오버플로우가 터지는 곳을 찾기만 하면 쉽게 풀 수 있을 것 같았다. 메인에서 두 함수로 이동을 할 수 있는데 my_turn과 your_turn이 이에 해당된다. 가장 먼저 my_turn을 보니..
-
0x07.0ctf 2017 - BabyHeap0x.CTF 2018. 3. 17. 19:50
0x07.0ctf 2017 - BabyHeap 파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/BabyHeap 요즘 How2Heap을 하나하나 자세하게 공부하는 과정에서 각각의 문서들과 관련된 문제들을 풀어보기 시작하였고, 여러 fastbin 문제중에서 이번에는 babyheap의 라이트업을 작성하고자 한다. CTF 문제를 풀기 위해서는 어디서 취약점이 발생하는지를 알아야 하기 때문에 IDA로 정적 분석을 가장 먼저 해보았다. main() 함수를 보니 while(1)문을 통해 case가 실행되는 것을 알 수 있다. 아마 normal_malloc과 같은 구조로 되어 있지 않을까하는 생각이 가장 먼저 들었다. sub_CF4()는 메뉴를 출력만 해주고, sub_138..