FTZ level15

Wargame/FTZ 2018. 1. 6. 20:29

소스를 보면 다음과 같다. 이전단계와 로직자체는 같은데 차이점은 포인터형 변수라 비교하는 변수의 메모리영역 값이 아닌, 비교하는 변수의 메모리 영역의 있는 값이 주소인 곳의 값을 비교한다.

 

 

먼저 스택 구조를 파악해야하는데 이전단계처럼 단순히 check변수 영역에 비교값을 넣기만 하면 되는게 아니라 brute forcing 식으로 더미노드값을 늘려가면서 할 수가 없어 해당 소스를 긁어다 위의 소스코드 구조일 때 지역변수간의 더미노드를 포함한 정확한 거리를 출력해주는 소스를 짰다.

 

 

랜덤스택이라 스택값 자체는 변하지만 구조자체는 변하지 않기 때문에 각 변수간의 거리차를 통해 더미노드를 포함한 스택구조를 구할 수 있었다.

 

 

buf 시작주소와 check 시작주소사이의 거리차이는 40바이트다.

 

그럼 이제 메모리 특정영역에 비교하는 대상값인 0xdeadbeef를 넣어놓고 check변수의 스택영역값을 미리 올려놓은 0xdeadbeef가 들어있는 메모리주소값으로 덮어주면 된다.

 

현재 스택이 랜덤스택이기때문에 버퍼부분에다 올려놓고 가르킬 수가 없었고 환경변수는 주소값이 변하지 않아 환경변수를 사용했다.

 

 

 

 

이제 필요한건 다 구했으니 바로 익스해주면 된다.

 

 

잘나온당.

 

 

 

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

FTZ level17  (0) 2018.01.07
FTZ level16  (0) 2018.01.06
FTZ level14  (0) 2018.01.06
FTZ level13  (0) 2018.01.06
FTZ level12  (0) 2018.01.05
블로그 이미지

JeonYoungSin

메모 기록용 공간

,