Leviathan7 [Linux] leviathan LEVEL6 → LEVEL7 풀이 leviathan LEVEL6 → LEVEL7 문제 풀어보겠습니다. 홈디렉터리에 leviathan6 실행파일이 있어 실행해보았다. 실행시켜보니 4개의 숫자 코드를 실행파일 인수로 받으며 임의로 0000을 대입해보니 Wrong 오류메시지를 출력하였다. 저 실행파일은 올바른 4개의 숫자를 입력했을시 leviathan7계정의 비밀번호를 반환해 줄 것이라고 생각한다. 먼저 ltrace를 사용하여 함수를 보았을때 올바른 숫자가 있을지 몰라 사용해보았다. 코드를 확인하니 4자리수 코드에 대한건 없는 걸 보니 다른 방법으로 알아내야 할 것 같다. brute-force 알고리즘을 사용하여 0000에서부터 1씩증가하는 값을 무차별대입하여 비밀번호를 알아내는 방식을 사용하였다. for i in range {0000..99.. 2023. 10. 2. [Linux] leviathan LEVEL5 → LEVEL6 풀이 leviathan LEVEL4 → LEVEL5 문제 풀어보겠습니다. 홈디렉터리에 leviathan5라는 실행파일이 있어서 실행해 보았다. /tmp 디렉터리 아래 file.log 파일이 찾지 못한다며 오류 메시지가 출력된다. 대충 실행파일은 file.log 파일을 열어주는 파일인 것으로 추측할 수 있다. 따라서 임의로 file.log 파일을 만들어 아무 문자나 저장을 해 보았다. 예상했던 대로 file.log 파일을 읽는 실행 파일이였다. 자세히 알아보기 위해서 ltrace 프로그램을 사용하여 어떻게 진행되는지 살펴보았다. 먼저 fopen 함수를 사용하여 /tmp/file.log 파일을 읽기 모드를 사용하여 읽은 후 fgetc함수를 사용하여 문자자체를 하나씩 읽고 끝까지 읽었을때 putchar 함수를 사용.. 2023. 9. 26. [Linux] leviathan LEVEL4 → LEVEL5 풀이 leviathan LEVEL4 → LEVEL5 문제 풀어보겠습니다. 홈디렉터리에 어떤 파일이 있는지 확인해 보니 .trash라는 디렉터리가 있는 것을 보니 여기에 패스워드가 있다고 생각하였다. bin 이라는 실행파일이 존재하였다. bin 파일을 실행시켜 보니 이진수 10개가 나왔으며 뭔가 패스워드를 이진수로 바꾼게 아닐까라는 생각을 하였다 자세히 알아보기 위해서 ltrace 프로그램을 사용하였다 fopen 함수를 사용하여 /etc/leviathan_pass/leviathan5 파일을 이진수로 변경한것이다. 따라서 저 이진수를 ASCII 코드로 변경하면 패스워드가 나온다. EKKlTF1Xqs 2023. 9. 25. [Linux] leviathan LEVEL3 → LEVEL4 풀이 leviathan LEVEL 3 → LEVEL4 문제 풀어보겠습니다. 홈디렉터리에 level3라는 실행파일이 보인다. 실행 시킨 후 enter the password라는 메시지가 출력된 후 아무 문자를 넣어 입력하니 wrong이라며 오류 메시지가 출력된다 어떤 함수가 쓰이고 어떻게 작성되었는지 확인하기 위하여 ltrace를 사용해보았다. printf 함수를 사용하여 패스워드를 입력하라고 메시지를 출력 한 후 입력을 받기 위해서 fgets함수를 사용하였다 그 이후 strcmp 함수를 사용하여 아까 입력한 문자열과 snlprintf라는 문자열을 비교한 후 두 문자열이 달라 puts함수를 사용하여 wrong이라는 메시지를 출력하였다. 그렇다면 패스워드가 snlprintf라는 것이 거의 확실하지 않은가? Agv.. 2023. 9. 25. 이전 1 2 다음