힌트를 까서 소스코드를 보면 기존의 11번,12번과는 달리 i라는 것이 새로 생기고

i가 0x1234567이 아닐시 Warnning: Buffer Overflow!!! 를 출력하며 kill로 sigsegv을 전달한다.

따라서 i에는 0x1234567을 넣어줘야한다.

gdb로 까보니 1048바이트이다. 그냥 모든 버퍼를 0x1234567로 채워버리고, 뒤에 쉘코드 주소를 넣어주면 된다.

| buf(1024) | dummy(12) | i(4) | dummy(8) | ebp(4) | ret(4) | 

이러한 스택구조를 이루고 있으므로 

4 * 262 = 1048

./attackme `python -c 'print [buf]*262+[ebp(A)]*4+ret'`

이러한 형식이고,

./attackme `python -c 'print "\x67\x45\x23\x01"*263+"\xf4\xfb\xff\xbf"'`

이렇게 짤 수 있다.

Flag : what that nigga want?

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

[FTZ] level15  (0) 2016.07.10
[FTZ] level14  (0) 2016.07.10
[FTZ] level12  (0) 2016.07.10
[FTZ] level11  (0) 2016.07.10
[FTZ] level10  (0) 2016.07.10

이번에도 bof문제이다 힌트를 까보면 이런식의 코드가 나온다.

gdb로 attackme를 까보면, 이번에도 마찬가지로 버퍼크기는 같은것을 볼수 있다.

따라서 level11과 같은 방식으로 해결 할 수 있다.

환경변수를 등록하고, NOP슬라이드 방식으로 익스플로잇을 짠다.


level11과는 다르게 인자값으로 받는것이 아니라 프로그램에서 직접 값을 받는 것이기 때문에 이런 형식으로 짠다.


Flag : have no clue

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

[FTZ] level14  (0) 2016.07.10
[FTZ] level13  (0) 2016.07.10
[FTZ] level11  (0) 2016.07.10
[FTZ] level10  (0) 2016.07.10
[FTZ] level9  (0) 2016.07.10

힌트를 까보면 코드 하나가 나온다. bof를 해야하는 문제이다.

attackme를 gdb로 까보면 이런구조인것을 알수 있다.

| str[256] | dummy[8] | ebp[4] | ret[4] |

간편하게 환경변수를 이용해서 풀려고 한다. 

따라서 환경변수 SHELLCODE의 주소값과 NOP슬라이드 방식을 사용해 쉘을 따낸다.   

FLAG : it is like this

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

[FTZ] level13  (0) 2016.07.10
[FTZ] level12  (0) 2016.07.10
[FTZ] level10  (0) 2016.07.10
[FTZ] level9  (0) 2016.07.10
[FTZ] level8  (0) 2016.07.10

+ Recent posts