전체 글
-
Level4 (goblin -> orc)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:16
소스코드를 확인해 보겠습니다. egghunter이란 환경변수 부분을 0으로 초기화 하는 역할을 하는데, 그래서 이전에 사용한 환경변수 관련된 문제 풀이는 사용할 수 없습니다. 그리고 argv의 47번째 바이트가 \xbf 인지 확인 합니다. buffer의 크기 40바이트 + SFP 4바이트 + RET 4바이트 = 48바이트 하지만 argv[1]의 47번째 바이트가 \xbf 인것으로 보아 RET 첫번째 주소의 시작값이 \xbf 라는 것을 알수 있습니다. 또한 gdb로 열어보면 코드 영역은 0x80~~의 주소를 가지고있고 우리가 필요한 \xbf 는 Stack 영역에 있는 주소입니다. 이제 한번 core dump를 해보겠습니다. RET에 들어가야하는 주소를 찾기 위해서 gdb -q -c core 명령을 통해 알..
-
Level3 (cobolt -> goblin)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:15
소스 코드를 확인해 보면 이번에는 gets()함수를 이용해서 입력을 받습니다. gdb를 이용해서 dummy 값이 있나 확인해 보겠습니다. 16만큼의 크기가 할당 되었습니다. buffer + SFP + RET 의 스택을 가지고 있습니다. core dump 를 떠 보겠습니다. core를 분석해서 RET의 주소를 확인해 보겠습니다. 53535353의 주소 맨처음이 0xbffffb30이므로 해당 값을 이용해서 BOF를 일으켜 보겠습니다. login : goblin Password : hackers proof 환경변수로 풀이하는 문제풀이는 이전에 사용한 방법과 같기때문에 생략하겠습니다.
-
Level2 (gremlin -> cobolt)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:12
소스 코드를 확인해 보겠습니다. 소스코드가 매우 level1과 같습니다. 똑같은 방식으로 풀이을 해보겠습니다. 이번에도 dummy 없이 정확히 16인것으로 보아 Buffer + SFP + RET 형식으로 되어 있습니다. 환경변수에 쉘코드를 입력해 보겠습니다. 사용한 쉘코드는 25바이트의 쉘코드 입니다. \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 해당 sh이름의 환경변수의 주소를 찾기 위해서 코드를 작성해 보겠습니다. gcc -o 를 이용해서 컴파일해서 실행해 보겠습니다. 페이로드를 작성해 보겠습니다. login : cobolt Password : hacking expo..
-
Level1 (gate -> gremlin)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:10
시스템 해킹을 매우 하기 싫었지만.. cve 분석을 해야하는데 거의 대부분의 cve에는 시스템해킹적인 요소가 포함되어 있어서 열심히.. 해야할거 같습니다. login : gate Password : gate gremlin 실행파일과 해당 실행파일의 소스코드인 gremlin.c가 존재 합니다. 주석처리로 되어있는 부분을 보면 기본적인 BOF 라고 설명이 되어 있습니다. buffer의 크기는 256으로 되어있고 취약점 함수인 strcpy가 사용 되어 있습니다. strcpy함수를 이용해서 bof를 실행 시키면 될 것 같습니다. 한번 gdb를 이용해서 한번 확인해 보겠습니다. FTZ를 했던 저는 할당 값이 dummy 가 없는 256 이라는 점에서 좀 당황스러웠습니다. 그 이유는 gcc의 버전이 낮아서 dummy..
-
UTC-CTF write up$ Capture The Flag $ 2019. 12. 22. 17:33
MISC ezip (baby) zip file의 비밀번호를 cat.png 에서 찾아서 flag를 얻는 문제입니다. 먼저 exiftool 명령어로 Comment에 어떤 문자열이 있는지 확인해 보겠습니다. ZIP File의 비밀번호는 e4syp4ssf0rz1p입니다. 압축을 해제하고 flag.txt를 열면 아래와 같습니다. Flag : utc{ex1f_ru135_4ll_7h3_w4y} Optics 1 (baby) 문제 파일을 확인해 보면 헤더 시그니처가 깨져 있습니다. 시그니처를 89 50 4E 47 0D 0A 1A 0A로 변경을 하고 사진을 열어보겠습니다. QR Code 를 인식해보면 flag를 얻으실 수 있습니다. Flag : utc{dang_you_know_qr_decoding_and_shit} Opt..
-
X-MASCTF Write up$ Capture The Flag $ 2019. 12. 21. 22:51
Forensic Santa's Forensics 101 파일을 다운 받고 열어보면 사진파일이 하나 있습니다. 하지만 열리지는 않으니 HxD를 이용해서 확인을 해보면 아래와 같습니다. ZIP 파일입니다. 압축을 해제해 보면 아래와 같은 폴더가 나옵니다. 사진에는 뭐 없는것 같아 보입니다. HxD로 열어서 확인을 해보겠습니다. Footer Signature 뒤에 Flag가 존재 합니다. Flag : X-MAS{W3lc0m3_t0_th3_N0rth_Pol3} Santa's letter 해당 문제를 한번 확인해 보겠습니다. 여기서 얻을 수 있는 숨겨져 있는 힌트는 Invisible lnk 와 Hide&Seek 입니다. 첨부 되어 있는 사진은 아래와 같습니다. HxD로 확인해 보면 아무런 이상한 점이 없습니다. ..
-
Memory - GrrCON 2015 #4$ 포렌식 $/$ 디지털 포렌식 with CTF $ 2019. 12. 20. 21:49
문제를 해결하기 위해서는 프로세스 인젝션(Process Injection) 이 무엇인지에 대해서 공부를 해봐야 합니다. Memory Forensic 문제 풀이 글이기 때문에 Process Injection에 대해서는 상세히 다루지 않겠습니다. Process Injection이란? 다양한 Injection 공격 중에서 Process 를 파일에 추가하여 해당 프로그램이 실행이 됬을때, 인젝션된 프로세스 프로그램까지 같이 실행이 되는 것을 의미합니다. 자세한 내용은 아래의 사이트에서 확인해 보실수 있습니다. Process Injection : https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-..
-
Memory - GrrCON 2015 #3$ 포렌식 $/$ 디지털 포렌식 with CTF $ 2019. 12. 20. 21:48
공격자는 피싱에 성공을 한것으로 보아 앞서 언급한 AnyConnectInstaller.exe를 이용해서 공격을 한것으로 추측을 할 수 있다. 아래의 filescan 플러그인을 이용해서 해당 파일의 경로를 좀 찾아 보겠습니다. 총 6가지의 파일이 출력이 되는데 0x000000003df1cf00와 dumpfiles 플러그인을 이용해서 파일을 복구해 보겠습니다. dumpfiles 플러그인을 이용하면 올바르게 복구가 됬을때 dat 파일과 img 파일이 2개가 나오는데 두개다 안나오면 복구가 재대로 안된 상태 입니다. ↑ 복구가 완료된 상태의 파일 .img 파일을 바이러스인지 확인해 주는 VirusTotal을 이용해 보겠습니다. 넣어보니 악성코드라는 것은 확실 했고, Xtrat 라는 문자열이 많았습니다. 해당 문..