본문 바로가기

wargame/ftz

FTZ level13


FTZ (Free Training Zone) level13


 


1. 환경 : window10

2. VM, Red Hat Linux 9.0, putty




id : level13

pw : have no clue





1.     cat hint 를 사용하여 힌트를 확인합니다.

 


2.     코드를 분석해보면 long I =1234567 이 저장되어 있고

Char형 buf[1024]가 저장되어있고 argc>1일 때 버퍼에 argv[1]가 버퍼에 복사됩니다.


i가 0x1234567값이 아니면 경고를 띄우고 프로그램을 종료시킵니다. (0,11)





3.     Gdb를 확인하여 stack구조를 확인합니다.

분석을 해보면 스텍의 총 크기는 1048byte 이다. + ebp 4 = 1052 이다.

리턴 어드레스를 덮어야 하지만 덮는 과정중에 i 를 침범한다그러면 프로그램이 종료 되는데 그것을 방지하기 위하여 i의 값이 침범될 때 i의 값을 넣어주면 된다.

그럼 i의 값이 들어있는 스텍 위치를 알아야하는데 그것은 (GDB에서 cmp)if 문에서 비교할 때 확인 할 수 있습니다. 즉 , cmp가 적힌 곳을 보면 ebp-12의 위치로부터 위칸과 0x1234567을 비교하라 라고 적혀있다 이것으로 i의 위치를 찾을 수 있었습니다.



4.     환경변수를 만드는 것은 11번과 12번 과 동일합니다.



5.     계산 법

리턴 어드레스 전까지 덮어야 하는 버퍼의 총 크기는 1052

Ret(4byte)         

Ebp (4byte) 

어떤 값 (12byte)  

Ebp -12    (i) (4byte)

어떤 값 (1036byte)


                  

i 전 까지의 stack =1048-12 =1036 + i (4byte)+ 12stack =1052

+환경변수의 주솟값



'wargame > ftz' 카테고리의 다른 글

FTZ level14  (0) 2016.07.12
buffer over flow 필독 자료  (0) 2016.07.12
FTZ level13  (0) 2016.07.12
FTZ level12  (0) 2016.07.12
FTZ level11  (0) 2016.07.12
FTZ level10  (0) 2016.06.23