본문 바로가기

system/writeup

2016 codefate floppy

floopy

2016 codegate floppy

맨 처음에 floppy를 할당하는 코드이다. 다음부터는 v8이라는 변수를 통하여 floppy를 조작하게 된다. 즉, floppy struct가 스택영역에 써진다.

 

write함수이다. data는 malloc한 곳에, description은 스택에 써준다.

 

modify 부분의 description 입력에서 스택 오버플로우가 터진다.

 

위 스택 오버플로우를 통해 descrption, data 출력을 통한 leak이 가능하다.

 

file 명령어로 봤을 떄는 dynamically linked였는데 코드를 보면 plt와 got가 존재하지 않는다. 그래서 동일한 보호 기법을 걸고 실행해서 확인해봤다.

 

gcc -o test test.c -fPIE -pie -s -m32 -z norelro

 

plt가 존재한다.. 왜그런지 잘 모르겠다. 좀 더 공부하고 다시 써야겠다. 근데 어차피 pie 때문에 plt랑 got 주소도 실행 시점에 결정돼서 결국 여간 귀찮은게 아니다.

 


'system > writeup' 카테고리의 다른 글

2016 hitcon secretholder  (0) 2019.01.22
2017 secuinside ohce  (0) 2019.01.21
2017 0ctf babyheap  (0) 2019.01.20
pwnable.tw applestore  (0) 2019.01.19
pwnable.tw dubblesort  (0) 2019.01.17