«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

공부를 합니다.

[공부] 인투르 본문

공부

[공부] 인투르

sher1ock. 2016. 10. 22. 02:36

/*

 보안공부를 하면서 막혔던 부분이나 정말 제 기준에서 어렵게 이해한 부분을 저만의 방식으로 끄적이는 공간을 만들었습니다!

(아마 혼잣말을 하면서 제가 저를 이해시키는 글이 될것입니다.ㅎ)



혹여나 제 글을 보신다면, 틀렸거나 잘못알고 있는 지식이 있다! 싶으면 (사실 많을 것 같습니다.) 바로 알려주세요 ^0^

*/



전 지금 시스템 공부를 하는 중 입니다. 시스템 뉴비라 해도 무관한 실력...ㅎㅅㅎ


시스템을 시작하면 스택과 힙, 즉 메모리 부분을 보면서 취약한 부분을 발견해 내는것이 가장 큰 그림입니다.


요새 스택 부분에서도 ctf 문제가 출제되고있지만 서서히 힙 관련해서도 문제가 출제 되고있습니다.


전 힙은 아직 이고 아직까지 스택에 대해서 공부를 하고있어요.



스택을 처음 배웠을때 무작적 FILO(First In Last Out, 처음으로 들어온 것이 나중에 나간다) 또는 LIFO(Last In First Out, 마지막에 들어온 것이 처음으로 나간다) 으로  쌓이고 나가는 형식으로만 알고 있었습니다.


이것을 실제로 확인한는 방법이 gdb 로 분석할때 '스택 프레임' 이라는것을 실제로 보게됬는데 참으로 신기하더군요.




스택프레임... 진짜 이해하기 어려운 부분이지만 이것은 진짜 본인만의 언어로 이해하는 것이 가장 빨리 이해되는것 같아요..ㅠㅠ


저는 처음에 접할때는 직접 C코드로 코딩해보고 그것을 32bit 로 컴파일해서 직접 gdb 로 분석해 봤습니다!


스택프레임을 알기위해서 좀 선수지식들이 있는데


ebp, esp 개념입니다.



ebp 는 스택의 바닥, 즉 베이스(base) 를 알려주는 레지스터입니다.


esp 는 스택의 현재위치! 즉 스택의 현재 Top 을 알려주는 레지스터입니다.


다들 리버싱 공부나 어떤 공부를 할때 스택에 대해서 분명 무조건 나와서 봤을텐데


다들 보셨을 스택공부의 처음, '스택은 거꾸로 자란다.'



ㅋㅋ.... 그래 스택은 거꾸로 자라는데 도대체 어떻게 어디로 거꾸로 자라는 것이냥..... ㅎㅅㅎ....


정말 제가 공감각적감각이 없어서인지 몰라도 다들 쉽게 이해하는 저 말을 이해하는데 좀 오랜시간이 걸렸습니당.


스택은 거꾸로 자란다. -> 시작위치가 있으면, 함수를 진행하고 실행시키면 시작위치에서 아래로 진행을 합니다!


그니까 함수를 run! 시키면 그 시작 위치(ebp)에서 우리가 봤을때 아래부분으로 esp가 움직이면서 진행을 하게됩니다.

그래서 ebp-0x0 식으로 나타나게 됩니다.




제가 직접 코딩한 C파일 가지고 gdb로 보면서 이 버퍼에는 이시점ㅇ에서 이런것이 들어가있고 이시점에서 이렇게 호출이 되고 이것이 저 함수에 들어갈때 이렇게 들어가는구나. 를 느끼게 되었죠.  


이 부분에서는 제가 c코딩을 잘 못해서 좀 더 복잡한 c코드를 다른사람이 작성해서 컴파일한 파일을 받아서 분석ㅇ르 했어요.


아무래도 내가 직접한 c코드는 대충 때려맞추게 되는 부분이 없지않아 있었죠.



그 c 코드는 Stage 를 클리어 하는 방식이었는데 많은 도움이 되었습니다..


그 prob 은 어떤수를 입력하고 그 수를 가지고 답을 입력해서 맞으면 다음 스테이지로 넘어가고  이런식으로 게임같은 문제였지요...



스택 보는법은 나중에 다른 글을 작성할때 스택보는 부분에서 다시 끄적일 생각입니다.




오늘의 정리

1. 스택프레임 보는것은 가장 기초이다.

2. 스택보는 법을 향상시키자!

'공부' 카테고리의 다른 글

[pwnable.kr] [bof] bof sol  (0) 2016.11.18
[공부] [메모] 문제들을 풀면서 익힌 것들  (0) 2016.11.17
[poxx2016] boffee_write up  (0) 2016.10.29
[공부] 인투르 2  (0) 2016.10.29
[pwnable.kr] [fd] fd 문제  (0) 2016.07.12
Comments