-
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 exposed
==============================================================================================
환경 변수를 이용한 문제 풀이가 아닌 RET의 아래영역을 이용한 문제 풀이입니다.
해당 문제는 ebp-16 밖에 할당이 되어 있지 않습니다.
그래서 25바이트의 쉘코드를 직접 입력으로 사용할 수 없습니다.
buffer[16] + SFP 에 dummy 값을 넣고 RET에 &shellcode 즉, 쉘코드의 주소를 입력해서 쉘코드를 RET의 아래영역에 입력해서 호출해 오는 형식으로 문제를 풀이 할 수 있습니다.
일단 쉘코드가 들어가는 주소를 알기 위해서 core dump를 만들어 봅시다.
먼저 cobolt 파일을 가지고 gdb를 사용할 수 없기 때문에 파일명의 길이가 같은 파일을 cp를 이용해서 만들어 보겠습니다.
그리고 A 16개 B 4개 C 4개를 넣고 그 뒤에 쉘코드 대용으로 S 25개를 입력해서 core dump를 만들어 보겠습니다.
53인 쉘코드 첫 주소가 다음과 같이 0xbffffc56인 것을 알 수 있었습니다.
그래서 이제 페이로드를 작성해 보겠습니다.
login : cobolt
Password : hacking exposed
'$ 시스템 해킹 $ > 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 Level1 (gate -> gremlin) (0) 2020.01.01