학사 나부랭이

Hacker School - level3 본문

Dot-Gabi/Hacker School Prob.

Hacker School - level3

태양왕 해킹 (14세) 2021. 3. 23. 18:31

흠... 낯선 명령어와 변수가 보이네요. 일단 검색해서 나온 결과, argc는 옵션의 개수, argv는 그 옵션의 문자열이 저장된 것 같아요. autodig를 실행할 때, 일단 옵션 두 개를 줘야 strcat로 cmd에 뭐가 입력이라도 되네요.

그럼 먼저 이 친구를 보러 가죠.

위의 cmd에 뭐가 입력이 되는 과정에서 level4의 권한으로 입력이 되겠네요. 그럼 my-pass나 /bin/bash를 넘겨줘야겠어요. 이제 코드에 대해 뭘 알아야 죽을 하든 밥을 하든 할 수 있겠죠?

이거는 제가 guest 계정에서 c언어로 작성한 유사 파일인데요. 프로그램을 실행하는 명령어도 하나의 옵션으로 치는 거 같아요. 그럼, 만약 ./autodig를 한다 하면 바로 다음 my-pass가 포함되어 있는 문장이 넘어가야겠죠?

인터넷에서 찾아보니 연속으로 명령어를 실행하는 방법은 세 가지가 있어요.

mkdir test;rmdir test: 앞의 명령어가 실패해도 다음 명령어를 실행해요.

mkdir test&&rmdir test: 앞의 명령어가 실패하면 다음 명령어도 실행하지 않아요.

mkdir test&rmdir test: 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어도 실행해요. 그러니까 test 디렉토리가 만들어지지만 rmdir이 실행될 때 만들어지고 있었으니 rmdir은 실행되지 못하죠.

자 그럼 autodig가 어떤 식으로 cmd에 입력을 해주는지 알아볼까요?

보니까 제가 코드에 임의로 넣어준 cat @에 입력한 a;whoami가 합쳐져서 명령되네요.

여기서! "a;whoami"가 아니라 a;whoami로 입력하면 a와 whoami가 따로 들어가 프로그램이 다 진행된 후에 whoami 명령이 내려져요.

test "a;whoami": test 파일 실행, 인자는 "a;whoami", test 안에서 a와 whoami 분리 실행
test a;whoami: test와 whoami 분리 실행,  test의 인자는 "a"

그런데 제가 코드 마지막에 임의로 넣어준 endodaze가 뒤에 붙어서 cat endodaze로 들어가는 걸 보면 뒤에 옵션을 넣지 못하는 명령어를 넣어야겠어요. 예를 들어

이 경우 뒤의 version.bind chaos txt가 트롤링해서 /bin/bash version.bind으로 입력해서 명령이 뜻대로 수행되지 않아요. 그래서 

제작자가 임의로 만든 명령어인 my-pass로 하면 답이 나온답니다!

 

dig는 도메인 네임에 대한 DNS 질의응답이 정상적으로 이뤄지는지 확인하는 경우 많이 쓰인다고 해요. 여기서는 안 쓰여서 그냥 넘어가지만 임주혁 교수님이 www.naver.com이 원래 223.130....으로 접속되는데 DNS가 영어인 naver.com으로 해도 223.130...으로 접속하게 해 준다는 뭐 그럴 때 설명한 nslookup과 비슷한 거 같네요.

'Dot-Gabi > Hacker School Prob.' 카테고리의 다른 글

Hacker School - level6  (0) 2021.03.25
Hacker School - level5  (0) 2021.03.25
Hacker School - level4  (0) 2021.03.25
Hacker School - level2  (0) 2021.03.21
Hacker School - level1  (0) 2021.03.21
Comments