-
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 라는 개념이 추가되기 전 입니다.
스택의 그림을 그려보겠습니다.
기본적인 25Byte의 쉘 코드를 이용해서 환경변수에 입력을해서 "A"*260+쉘코드가 입력된 환경변수의 주소 4바이트를 넣어주면 환경변수의 쉘코드가 ret를 덮어 버리면서 쉘코드 주소로 return 되게 됩니다.
환경변수에 쉘코드를 입력해 보겠습니다.
사용한 쉘코드는 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 를 이용해서 컴파일해서 실행해 보겠습니다.
주소는 0xbffffefa 입니다.
바로 페이로드를 작성해 보겠습니다.
bash를 얻어 냈습니다!
login : gremlin
Password : hello bof world
'$ 시스템 해킹 $ > Los Of BufferOverflow' 카테고리의 다른 글
Level6 (wolfman -> darkelf) (0) 2020.01.01 Level5 (orc -> wolfman) (0) 2020.01.01 Level4 (goblin -> orc) (0) 2020.01.01 Level3 (cobolt -> goblin) (0) 2020.01.01 Level2 (gremlin -> cobolt) (0) 2020.01.01