ImFe's study

버퍼 오버플로우 왕기초편 - 무임승차 문제 본문

FTZ

버퍼 오버플로우 왕기초편 - 무임승차 문제

ImFe 2020. 4. 24. 16:09

해쿨핸드북 41P

int auth(4바이트) 를 할당.

char passwd[20] (1x20, 20바이트) 를 할당

 

strcmp는 비교되는 두 문자열이 같다면 0을 반환하는 함수입니다. 입력한 패스워드가 secretkey면 0을 반환하고

auth는 1이 되고 0값만 아니면 모두 참값으로 생각하는 if의 성질을 이용해 인증에 통과했다는 문구를 띄우네요.

 

auth만 1이 되어도 인증에 통과했다는 문구를 띄울 수 있을거같습니다.

43P

 

 

이게 진짜 문제인데요. 

student/student로 로그인 후 cd quiz

 

ls -al로 확인해보니까 real_quiz파일의 권한이 rwxrwx--x니까 저희는 --x에 해당되고 실행(execute)권한밖에 없네요.

그리고 실행해보면 무슨 문자열이 뜨는데 한글패치를 안해서 문자열이 깨지네요..

 

아마 패스워드를 입력하라는 글귀일거같습니다.

한글이 깨지니까 Xshell로 들어가줍시다. 문서에 써져있는대로 /sbin/ifconfig로 주소를 확인하고 telnet설정으로 한 후 23번 포트로 설정한다음 접속해줍시다.

main안에서 생성된 버퍼를 간단하게 나타내보았습니다. 한칸당 1byte입니다.

passwd가 20바이트로 할당되어있고, auth는 int형이니까 4바이트입니다.

 

auth값이 0이 아닌 다른값이 되도록 해야하는데 비밀번호를 알아내서 auth값을 0으로 만드는것보다는 버퍼 오버플로우공격으로 passwd를 꽉 채워서 auth값까지 0이 아닌 다른 값으로 채우는것이 더 편할것같습니다.

a를 20개만 입력했을때는 버퍼가 넘치지 않아서 인증에 실패했지만 그 이상으로 입력을 하게 되면 auth값이 0이 아니게되버려서 인증에 통과 할 수 있습니다.

'FTZ' 카테고리의 다른 글

FTZ level 11 풀이 -3- 환경변수  (0) 2020.04.28
FTZ level 11 풀이 - 2 - NOPsled  (0) 2020.04.28
FTZ level11풀이-1  (0) 2020.04.12
레지스터(register)란?  (0) 2020.04.07
어셈블리어 기초- 진법 체계  (0) 2020.03.25
Comments