Level12
level12의 계정으로 접속한 후, hint를 확인해보면 다음과 같습니다.
소스코드를 통해 분석해보면, 먼저 256Byte 크기의 지역변수 str배열을 선언합니다. 그 후, attackme에 level13(3093)의 권한을 부여합니다. 문장을 입력하라는 문자열을 출력하고 gets 함수로 문자열을 입력 받은 뒤, 입력받은 문자열을 출력하고 종료합니다.
gdb를 이용해 분석해보았습니다. 스택의 구조를 생각해보았을 떄, 앞의 level11과 동일할 것 같습니다. RTL (Return To Libc)를 활용하기 위해 ASLR 여부를 ldd명령어를 이용해 확인해보았습니다.
확인 결과, libc에는 ASLR이 걸려있지 않음을 확인할 수 있습니다. 이후의 모든 공격 순서는 level11과 모두 동일합니다. /bin/sh가 위치한 주소, system함수의 주소 또한 동일하기 때문에 생략합니다. level12는 level11과는 다르게 문자열 입력을 프로그램 실행중에 받으므로 다음과 같이 공격을 시도하였고, 그 결과 level13의 password를 알 수 있었습니다.
No comments:
Post a Comment