$ 시스템 해킹 $/Los Of BufferOverflow
-
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..