본문 바로가기
시스템 해킹/FTZ

level 20

by sonysame 2016. 10. 12.


fgets로 79자만 받으므로 버퍼오버플로우 공격 문제가 아니다.

printf를 활용하는

포맷스트링어택을 해야 한다.



%8x를 4번 썼을때 41414141이 출력된다.


에그쉘을 만들어주고

에그쉘의 주소를 구한다.



에그쉘의 주소를 십진수로 바꾸면

엄청나게 큰 수가 나오므로,  두 수로 나눈다

f2c5 & bfff

0xf2c5=62149

0xbfff=49151

49151>62149 만족하지 않으므로

1bfff-f2c5=52538로 대체한다.



RET의 주소를 구하려 하였으나,

gdb에서 disas main이 먹히지 않는다.

구글링을 통해

이런 경우,,


<.dtors라는 것을 이용한다고 한다>를 깨달았다.

 .dtors는 main함수가 끝나고 실행이 되는 명령이 있는 곳이라고 합니다.

08049594+4 인곳이 RET이다.


0x08049598:RET이므로


0x08049598에 62149를 넣고

0x0804959a에 52548을 넣는다.

AAAA\x98\x95\x04\x08AAAA\x9a\x95\x04\x08이 40자 이므로

62149-40=62109

%62109c를 한 다음에 %n을 넣는다.==0x08049598에 62149를 넣는다.

그리고

%52538c를 한 다음에 %n을 넣는다.==0x0804959a에 52548을 넣는다.




끝~~~!!


'시스템 해킹 > FTZ' 카테고리의 다른 글

level 19  (0) 2016.10.12
level 18  (0) 2016.10.12
level 17  (0) 2016.10.12
level 16  (0) 2016.10.12
level 15  (0) 2016.10.12