nemo의 이야기

BOF원정대 goblin -> orc 본문

Information security/System security

BOF원정대 goblin -> orc

nemojjong 2017. 10. 8. 16:27

 

 

orc.c 파일을 확인해보면 위와 같은 소스 파일을 확인할 수 있다.

 

소스파일을 분석해보면 memset함수를 이용해서 환경변수를 초기화하는 것을 확인할 수 있다.

 

그리고 argv[1]에 리턴 주소 마지막 byte가 bf으로 끝나지 않으면 프롤그램이 종료 되게 설정해놨다.

 

이 문제를 해결하기 위해서는 버퍼에 쉘코드를 삽입하여 공격을 해야된다.

 

우선 버퍼에 A를 44byte를 넣고 리턴주소에 bfbfbfbf를 넣어 메모리를 확인해보자

 

 

버퍼에 주소는 bffffad0라는 것을 확인할 수 있다.

 

그러면 해당 주소에 쉘코드를 넣고 나머지는 nop으로 채워서 공격해보자

 

 

메모리를 확인해보면 정확히 들어가 있는 것을 확인할 수 있다.

 

그러면 원본 파일에 가서 공격을 시도해보자

 

 

위 사진처럼 실패한 것을 확인할 수 있다.

 

왜냐하면 gdb와 실제 프로세스에 주소가 다르기 때문이다.

 

하지만 argv에 주소는 16byte씩 이동하기 때문에

 

bffffad0에서 16byte씩 증, 감소를 시켜서 찾으면 성공할 것이다.

 

 

16byte를 증가시켰더니 공격에 성공한 것을 확인할 수 있다.

 

이와 같은 방법이 있고 c파일을 buffer에 주소를 확인하는 방법이 있다.

 

하지만 c파일에 크기가 맞아야지 해당 buffer주소가 맞으므로 주의 해야된다.

'Information security > System security' 카테고리의 다른 글

BOF원정대 wolfman -> darkelf  (0) 2018.01.08
BOF 원정대 orc -> wolfman  (0) 2017.10.30
BOF원정대 cobolt -> goblin  (0) 2017.10.05
BOF원정대 gremlin -> cobolt  (0) 2017.10.04
BOF 원정대 gate -> gremlin  (0) 2017.09.30
Comments