1. Leviathan4 목표
There is no information for this level, intentionally.
2. Leviathan4 구현
# 비밀번호 root 입력 접속
ssh -oStrictHostKeyChecking=no root@localhost -p 2223
chown -R root:root /home/leviathan4/.[!.]*
chmod 755 /home/leviathan4
# leviathan5 유저를 생성하여 준다.
useradd leviathan5 && echo -e "0dyxT7F4QD\n0dyxT7F4QD" | passwd leviathan5
mkdir -p /home/leviathan4/.trash
cat <<'EOF' > /tmp/bin.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file;
char *filepath = "/etc/leviathan_pass/leviathan5";
file = fopen(filepath, "r");
if(file == NULL)
{
return 255;
}
int c;
while ((c = fgetc(file)) != EOF)
{
for (int i = 7; i >= 0; i--)
{
printf("%d", (c >> i) & 1);
}
printf(" ");
}
printf("\n");
fclose(file);
return 0;
}
EOF
gcc -o /home/leviathan4/.trash/bin /tmp/bin.c
chown root:leviathan4 /home/leviathan4/.trash
chmod 550 /home/leviathan4/.trash
chown leviathan5:leviathan4 /home/leviathan4/.trash/bin
chmod 4550 /home/leviathan4/.trash/bin
# 다음 패스워드가 담긴 파일을 생성한다.
echo '0dyxT7F4QD' > /etc/leviathan_pass/leviathan5
chown leviathan5:leviathan5 /etc/leviathan_pass/leviathan5
chmod 400 /etc/leviathan_pass/leviathan5
exit
3. Leviathan4 문제풀의
# 비밀번호 : WG1egElCvO
ssh leviathan4@localhost -p 2223
# 호출 라이브러리 확인
ltrace /home/leviathan4/.trash/bin
# 다음 문제 비밀번호를 확인
# perl -n : 표준출력의 각 줄에 반복적으로 실행
# perl -e : 스크립트에 저장하지 않고도 명령어에서 perl 명령어를 실행
# $_ : perl -n 옵션을 사용할떄 입력줄이 자동으로 $_에 저장됨
# B* : 저장된 이진 문자열을 아스키 코드로 변환함
# 0dyxT7F4QD
/home/leviathan4/.trash/bin | tr ' ' '\n' | perl -ne 'print pack("B*", $_)' | tr -d '\n' | sed '$s/$/\n/'
'Wargame > Leviathan' 카테고리의 다른 글
[ Docker ] Leviathan Wargame 만들기 - 6번 문제 ( 8 / 8 ) (0) | 2024.09.10 |
---|---|
[ Docker ] Leviathan Wargame 만들기 - 5번 문제 ( 7 / 8 ) (0) | 2024.09.10 |
[ Docker ] Leviathan Wargame 만들기 - 3번 문제 ( 5 / 8 ) (0) | 2024.09.10 |
[ Docker ] Leviathan Wargame 만들기 - 2번 문제 ( 4 / 8 ) (0) | 2024.09.10 |
[ Docker ] Leviathan Wargame 만들기 - 1번 문제 ( 3 / 8 ) (0) | 2024.09.10 |