[해커스쿨ftz]Level 3
글 작성자: 성비비
level3/can you fly?로 로그인 후 전과 같이 ls명령어 후 hint 출력.
hint 안에는 c언어 소스코드가 있었고, level4의 SetUID권한 있는 /bin/autodig 파일 발견.
소스보니까 autodig의 소스라고 나와있다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(argc, char **argv){ //인자개수와 인자저장 배열
char cmd[100]; //문자열 변수 선언
if(argc!=2){ //인자가 2개가 아니면 조건문 실행
printf("Auto Digger Version 0.9\n");
printf("Usage : %s host\n, argv[0]"); //0번쨰 인자 출력
exit(0); //프로그램 종료
}
// 위 조건문 실행 안되면
strcpy(cmd, "dig @"); //dig 명령어
strcat(cmd, argv[1]); //1번째 인자 뒤에 붙이기
strcat(cmd, " version.bind chaos txt");
system(cmd); //system함수 명령어 실행
}
소스보면 dig 명령어가 나와있는데 구글링해보면 nslookup같은 dns쿼리 보내는 툴이다.
소스 부분 보면 dig @있는데 @8.8.8.8 처럼 IP나 네임서버 넣으면 된다.
네임서버 넣고 뒤에 내가 입력한 인자를 strcat으로 붙이게 되는데 여기에 세미콜론으로 명령어 하나 더 쓸 수 있는게 바로보여서 바로 테스트를 했다.
8.8.8.8로 테스트해보고 세미콜론(;)으로 ls했더니 잘 되서 바로 my-pass 쳤다.
my-pass 쳤더니 현재 계정 level3 비번을 알려준다..
그래서 그냥 잘못친줄 알고 이것저것 쳐보다 안되길래 my-pass 쳤을 떄 level3비번이 나오는걸 자세히 보다
"8.8.8.8;my-pass"로 말따옴표로 묶어서 입력하니 되었다.
말따옴표로 안묶으면 당연히 level3 쉘에서 치니까 level3 비번이 나오고
말따옴표로 묶으면 하나의 인자(argv[1])가 되어서 SetUID권한 달린 autodig안으로 들어가서 실행되기 때문에 level4 비번이 나온다.
쉬운건데 잠깐 해맸다. 그래도 재밌다.
level4 비번은 "suck my brain"..?
끝.
'정보보안 > Wargames' 카테고리의 다른 글
[pwnable.kr]fd (0) | 2018.01.03 |
---|---|
[해커스쿨ftz]Level 4 (0) | 2018.01.02 |
[해커스쿨ftz]Level 2 (0) | 2017.12.30 |
[해커스쿨ftz]Level 1 (0) | 2017.12.29 |
댓글
이 글 공유하기
다른 글
-
[pwnable.kr]fd
[pwnable.kr]fd
2018.01.03 -
[해커스쿨ftz]Level 4
[해커스쿨ftz]Level 4
2018.01.02 -
[해커스쿨ftz]Level 2
[해커스쿨ftz]Level 2
2017.12.30 -
[해커스쿨ftz]Level 1
[해커스쿨ftz]Level 1
2017.12.29