FTZ level11

Wargame/FTZ 2018. 1. 5. 22:01

힌트파일을 보면 다음과 같다.

 

 

처음엔 별다른 제약이 없어 그냥 BOF를 시도했지만 스택주소값이 랜덤하게 바뀌는바람에 RTL로 시도했다.

 

먼저 스택구조를 확인해보면 다음과 같이 268바이트에서 세그먼트 fault가 뜨는걸로 보아 더미노드8바이트가 포함되어있다.

 

 

SFP까지 268바이트 덮고 RET값에 시스템 함수 주소 넣어준다음 인자값 넣어주기 위해 더미값4바이트 추가한 후 /bin/sh 문자열주소값을 찾아서 넣어주면 될 것 같다.

 

먼저 system함수의 값을 구하기 위해 간단한 system함수를 호출하는 코드를 짜서 동적으로 컴파일 한 후 main함수에 bf걸고 실행을 시켜 동적라이브러리를 로딩시킨다음 print system 함수로 주소값을 구했다.

 

 

 

다음으로 system 함수의 인자로 들어갈 /bin/sh 문자열 주소값을 구해야 되는데 처음엔 환경변수에 넣고 주소값 구한다음에 시도해봤는데 랜덤스택때문인지 제대로 동작을 안했다.

 

그래서 system 함수의 시작 주소부터 1바이트씩 증가하면서 /bin/sh를 찾는 코드를 짜서 돌렸다.

 

 

 

이제 준비물을 다 구해졌으니 그대로 익스플로잇 해주면 된다.

./attackme `python -c 'print "A"*268+"\xc0\xf2\x03\x42"+"A"*4+"\xa4\x7e\x12\x42"'`

 

 


 

 

 

 

'Wargame > FTZ' 카테고리의 다른 글

FTZ level13  (0) 2018.01.06
FTZ level12  (0) 2018.01.05
FTZ level10  (0) 2018.01.05
FTZ level9  (0) 2018.01.05
FTZ level8  (0) 2018.01.05
블로그 이미지

JeonYoungSin

메모 기록용 공간

,