[디버거] PEDA, PWNDBG,gef 설정방법! (feat. gdbinit)

2019. 9. 18. 13:17System Hacking/쓸모있는 꿀팁

안녕하세요, 오랜만에 포스팅 하네요!

비오비에서 공부하느라 블로그에 소홀했네요..

될때마다 틈틈히 올리도록 하겠습니다.

 

각설하고 오늘 포스팅 할 내용은, pwnable 할 때 쓰는 

다양한 디버거를 어떻게 동시에 쓰냐! 에 관한 것입니다

 

저희가 CTF나 문제 풀때 gdb-peda, pwndbg, gef등 다양하게 

디버깅 툴이 존재하고, 각각의 장점이 모두 있죠?

 

근데 사이트 찾아보면 다 이렇게 나오더라구요

 

너무 막 어렵게 나와서.....

저는 간단하게 알려드리겠습니다!

 

--------------------------------------------------------------------------------------------------------------------------------

준비물은 무엇이냐!

*****peda, pwndbg, gef 파일이 어디에 다운로드되었느냐입니다!!!!!!!!! (일반적으로 다운로드 받은 위치에서 설치를 진행하시겠죠?)

----------------------------------------------------------------------------------------------------------------------------------

 

 제가 /home/f1ash라는 디렉토리(위치)에 peda와 pwndbg 파일을 git clone을 통해서 받아 왔습니다

※ 일반적으로 파일을 다운로드 받고 싶은 위치에 가서 git clone 하시면 그 위치에 파일이 다운로드 됩니다

 

무슨 말이냐? 

ex) 서울시란 폴더에 peda 파일을 받고 싶다  => cd 서울시 => git clone https://github.com/longld/peda.git ~/peda하면 서울시라는 폴더에 peda 파일이 받아집니다

 

 

다시 돌아와서 저는 /home/f1ash라는 위치에 peda와 pwndbg 파일을

git clone https://github.com/longld/peda.git ~/peda

git clone https://github.com/pwndbg/pwndbg 

해서 받아 왔습니다!

 

다운받아서  peda와 gdb를 각각 설치한 다음에,

shell창에서 vi ~/.gdbinit이라고 치면 

뭐라 적혀 있을 수도 있고, 안 적혀 있을 수도 있습니다

걱정하지 마세요 ㅋㅋ 상관없으니까

 

insert 모드로 바꾸고

아래와 같이 

***형식 => source [파일 위치] 

적어주면 됩니다!

 

아래껀 vm에서의 gdbinit 파일이구요!

저는 $ cd 했을 때 (최상위 디렉토리로 이동해줘!!!!)

/home/f1ash가 나와서 (최상위 디렉토리가 여기구나 ㅇㅇ)

 

 

클라우드에 있는 서버에 있는 gdbinit 파일도 보여드릴게요!

 

현재 위치는 / 최상위 root죠

거기에 tools라는 폴더를 만들었어요 제가 그냥

그리고 거기에 peda와 pwndbg 파일을 받아 놨어요

 

그래서 클라우드에서는 source의 경로가 /tools/peda, /tools/pwndbg가 되겠죠?

설치위치!!!!!!!! 그리고 설치된 파일 이걸 제가 기억하라고 했잖아요!

똑같이 vi ~/.gdbinit해서 들어가면!

 

 

그래서 똑같이 설치위치 적어줍니다!

/tools/peda/peda.py 설치된 파일!

/tools/pwndbg/gdbinit.py 설치된 파일!

 

+----------------------------------+

여기서 주의해야 하는 사항!

1) 그리고 쉘에서 gdb만 입력하면 되요! 

            -peda 쓰려고 gdb-peda 이렇게 안치셔도 되요! 

            -pwndbg쓰려고 pwndbg 이렇게 안치셔도 되요!

     그냥 gdb 치셔도 되요! 

 

2) gdbinit 파일에서 쓰고싶은거 하나만 남기고 주석처리 해주세요!

 

제 VM에서는 peda와 pwndbg 모두 #으로 제가 주석처리해서

파란색 글씨고 gef만 제대로 되어있죠?

 

클라우드에서는 

pwndbg를 제가 #으로 주석처리 해놨죠?

 

*****쓸 것 하나만! 딱 켜놓으시고 나머지 주석처리해야 잘 알아들어요!

ex) 나 peda만 쓸래! 그러면 pwndbg, gef 다 #으로 주석처리

나 gef만 쓸래! 그러면 peda, pwndbg 다 #으로 주석처리

 

+----------------------------------+

 

만약에 난 원래 기본으로 제공되는 (구데기) gdb를 쓰고싶어!

다시 돌아갈래!

 

그러시면 gdbinit파일에서 모든 source 싹다 #으로 주석처리 하시면 됩니다!

 

다른 디버거 쓰고싶으시면 언제든지

vi ~/.gdbinit 가서

쓰고싶은거 하나 남기고 나머지 주석처리 해주시면 됩니다!