gdb에서 test파일을 run명령어를 했을때 권한문제로
"Couldn't get registers : 명령이 허용되지 않음."
이라는 오류메세지가 출력되는것을 확인 할 수 있다.
이 문제의 원인은,
1. gdb프로그램의 setuid 문제이다. (내가 겪음.)
주로, gdb파일 권한 가지고 놀다가 chmod명령어를 이용하여 퍼미션을 이상하게 설정해 논 적이 있다.
이때는 chmod 755 /usr/bin/gdb 명령으로 gdb를 원상복귀 해놓을 수 있다. 이때는 root권한이 필요하다.
내가 root라면 이문제를 바로 해결할 수 있지만, root계정이 아니고 gdb프로그램의 문제라고 생각되면
관리자한테 연락해야 한다. (그러나 거의 2번과 같은 문제이다.)
2. 대상 (victim)파일의 권한문제 이다.
워게임, 해킹대회 등등 이러한 방법으로 우회를 해야한다.
setuid비트가 걸린파일을 바로 디버깅하려면 gdb에서 권한부족오류가 뜬다.
리눅스에서는 파일을 복사했을때 setuid비트가 사라지게 된다. test파일이 setuid 비트가 걸려있다면
cp test test_cp 같은 명령으로 test_cp 파일을 복사하고, gdb test_cp , run 을 해주면 정상적으로 실행되는것을 확인할 수 있다.
(복사대상파일과, 복사파일의 이름길이는 똑같이 해주는것을 추천한다.)
나는 1, 2번 문제를 동시에 겪고, 구글링하면서 약간 힘든 경험이 있다.
'메모장' 카테고리의 다른 글
shodan.io Honey tips (0) | 2021.04.27 |
---|---|
peda, pwndbg, gef 동시 설치 (2) | 2021.04.26 |
우분투에 pip2 설치 (0) | 2021.03.21 |
맥북 프로 발열잡기(Big Sur기준) (0) | 2020.12.20 |
빅서 Parallels 실행 오류 해결 (0) | 2020.12.17 |