확실히 뒤로 갈수록 문제 난이도가 올라가네요
포기하지 않고 열심히 풀어 봅시다
Bandit Level 24 → Level 25 문제 풀이
ssh bandit24@bandit.labs.overthewire.org -p 2220
password : VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar
Bandit Level 24 → Level 25 문제는 포트 30002에서 수신 대기 중이며 bandit24의 비밀번호와 비밀 숫자 4자리 핀 코드를 제공하면 다음 레벨의 패스워드를 획득할 수 있다고 합니다 추가로 brute-forcing이라고 하는 10000개의 조합을 모두 통과하는 것 외에는 핀 코드를 검색할 방법이 없다고 합니다
brute-forcing(브루트 포스) : 무차별 대입 공격으로 특정 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미합니다
가능한 모든 경우의 수를 대입하기 때문에 시간이 많이 걸립니다
먼저 nc(넷캣) 명령어를 이용하여 30002 포트로 접속하니 bandit24의 패스워드와 핀 코드를 공백으로 구분하여 한 줄로 입력하라고 나옵니다 (bandit24 패스워드를 입력해 보니 틀렸다고 나오네요)
이전 문제와 동일하게 /tmp 경로에서 임의의 디렉터리를 생성하여 쉘 스크립트를 작성해 줍니다
#!bin/bash
for i in {0000..9999}
do
echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> /tmp/pincode/password.txt
done
#!bin/bash //bash 쉘을 사용합니다
for i in {0000..9999} // 핀 코드가 4자리이므로 0000~9999까지 i를 반복합니다
do
echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> /tmp/pincode/password.txt // [password] [pincode] 양식에 맞게 해당 경로의 파일로 리다이렉션 합니다
done
리다이렉션이 >> 이면 기존의 파일 데이터가 사라지지 않고 다음 줄로 새로 입력합니다
[ 리다이렉션 사용법 ]
Kali Linux Redirection & PIPE (방향 전환) [ 2 ]
지난 시간에 데이터 스트림을 알아보면서 데이터의 흐름이 있다고 했는데 이번 시간에는 이 데이터의 방향을 바꾸는 리다이렉션을 공부해 봅시다 리다이렉션 : Re / direction (다시 방향) 즉 방향
mu-sa.tistory.com
이제 우리가 작성한 쉘을 실행시켜봅니다 해당 쉘은 bash 명령어를 이용하여 실행시킬 수 있습니다
쉘에서 작성한 것처럼 [password] [pincode] 형식으로 출력되는 걸 알 수 있습니다
그다음 파이프랑 리다이렉션을 이용해서 password 파일의 내용을 nc(넷캣)으로 전달해 주고 출력값을 result 파일로 리다이렉션 해주면 됩니다 (이 과정이 brute-forcing[브루트 포스]입니다)
리다이렉션을 한 result 파일을 읽어보면 사진과 같이 bandit25의 패스워드를 획득할 수 있습니다
※ 도중에 출력이 멈추거나 오류가 발생하면 밑에 글을 참고하세요! ※
Brute-forcing 데이터량 처리 오류
#!bin/bash //bash 쉘을 사용합니다
for i in {0000..9999} // 핀 코드가 4자리이므로 0000~9999까지 i를 반복합니다
do
echo "VAfGXJ1PBSsPSnvsjI8p759leLZ9GGar $i" >> /tmp/pincode/password.txt // [password] [pincode] 양식에 맞게 해당 경로의 파일로 리다이렉션 합니다
done
해당 쉘을 실행하는 도중 for i in {0000..9999} 이 구문에서 아무래도 0000부터 9999까지 계속 반복처리를 하다 보면 한 번에 처리되는 데이터량이 많아 오류가 발생하게 됩니다
이 오류는 이런 식으로 중간에 문구 출력이 멈추게 됩니다 결국 ctrl+c로 탈출하는 상황이 발생합니다
이 문제점을 해결하기 위해서는 데이터량을 절반으로 나눠서 진행하면 됩니다
이렇게 쉘 파일을 2개로 나누면 데이터량을 절반으로 나누게 됩니다 실행 방법은 위에랑 동일하게 수행하면 됩니다
단점으로는 한 번 해야 할 작업을 여러 번 나누어서 작업하기 때문에 시간적으로 비효율적입니다 하지만 중간에 출력이 멈추는 현상을 해결할 수 있습니다 만약 이렇게 나눠도 출력이 멈춘다면 또다시 데이터량을 1/3씩 줄여서 출력하면 됩니다
앞으로 쉘 스크립트를 작성하면서 효율적인 부분과 비효율적인 부분을 고려해서 작성해야겠습니다