FTZ (Free Training Zone) level14
1. 환경 : window10
2. VM, Red Hat Linux 9.0, putty
id : level14
pw : what that nigga want?
1. Cat hint 를 통해 힌트를 확인합니다.
Int형 crap 변수 하나 . int형check변수 하나 그다음 char형 buf[20]의 순 서로 Stack에 쌓인다.
fget함수를 통해 buf를 45개의 갯수까지 입력 받는다.
Check 변수안의 값이 0xdeadbeef와
같으면 level15의 쉘코드를 실행시킵니다.
2. gdb를 통해 stack 의 구조를 확인한다.
If 로 비교할때를 gdb로 확인해보면 ebp에서 -16떨어진 곳과
0xdeadbeef를 비교한다.
즉 check 스텍의 위치는 ebp -16 위 이다. (스텍의 총 크기 56)
3. check의 값을 원하는 값(deadbeef)로 스텍을 덮어씌워줍니다.
계산 스텍의 총크기 56 [ebp -56] check의 위치 [ebp-16]위 그러므로
56-16=40
40에 해당하는 버퍼 크기에 아무 값이나 넣고 check 변수의 위치에 deadbeef를 입력하여 줍니다 .(deadbeef를 넣어줄 때 글자의 순서는 스텍이 쌓이는 원리를 생각하여 넣어주면 됩니다.)
'Study > ftz' 카테고리의 다른 글
FTZ level16 (0) | 2016.07.12 |
---|---|
FTZ level15 (0) | 2016.07.12 |
buffer over flow 필독 자료 (0) | 2016.07.12 |
FTZ level13 (0) | 2016.07.12 |
FTZ level12 (0) | 2016.07.12 |
댓글