본문 바로가기
picoCTF

SansAlpha

이 문제는 bash jail류의 문제이다. 이런 문제를 푼 적이 없어서 답을 참고했다. 

 

Multiverse는 우리가 쉽게 이해할 수 있다. 아쉽게도 서버는 숫자와 기호로만 이루어진 키보드를 사용하고 있는 멀티버스이다.

 

The Multiverse is within your grasp! Unfortunately, the server that contains the secrets of the multiverse is in a universe where keyboards only have numbers and (most) symbols.

 

문제 설명에서 얘기하다시피 alphabet은 입력할 수가 없어서 ls, cat 등 매일 사용하는 linux command들을 사용할 수 없다. 

 

 ls
SansAlpha: Unknown character detected

 

SansAlpha$ cat
SansAlpha: Unknown character detected

 

*을 입력하면 전체 시스템에서 어떤 파일, directory들이 있는지 알려준다. 우리의 경우 blargh directory가 있다. 

SansAlpha$ *
bash: blargh: command not found

 

blargh 밑에는 어떤 파일이나 directory가 있는지 확인하려고 */*를 입력하니 flag.txt가 있는 것을 알아냈다. 문제는 flag.txt의 read permission이 없어서 flag.txt를 볼 수 없다. 

 

SansAlpha$ */*
bash: blargh/flag.txt: Permission denied

 

root 밑에는 어떠한 executable, directory들이 있는지 알아보기 위해서 /*를 입력했다. /bin이 있다고 알려준다.

SansAlpha$ /*
bash: /bin: Is a directory

 

?을 이용하면 파일 이름의 길이가 ?의 개수와 같은 파일들만 보여준다.  여기서 살짝 guessing이 들어가는데? 한개부터 ??????까지 입력을 해 봐야 한다는 것이다. ??????을 입력하면 base32를 서버 측 linux에서 base32를 띄워주다가 base64를 잘못 사용하고 있다고 알려준다. 여기서 base64를 이용해야 할 수도 있겠구나는 것을 감으로 잡아야 한다. 

 

SansAlpha$ /*/??????
/bin/base32: extra operand '/bin/base64'
Try '/bin/base32 --help' for more information.

 

숫자는 사용이 가능하니 ????64로 base64를 이용하여 flag.txt를 읽으려고 했으나. 서버에서 base64가 아닌 x86_64를 선택해 버렸다. x86_64는 앞에 3글자가 오고 4,5번째 글자가 64이니 우리가 입력한 glob에 맞는 프로그램이기는 하다. 

 

SansAlpha $/*/????64 */*
/bin/base64: extra operand '/bin/x86_64'
Try '/bin/base64 --help' for more information.

 

x86_64가 아닌 base64를 선택하기 위해서 4번째 글자는 !으로 '_'이 아닌 글자만 선택할 수 있게 했다. 이번에는 blargh 밑에 flag.txt 이외에도 여러 파일이 있는 것 때문에 base64가 제대로 작동하지 않았다. 

 

SansAlpha$ /*/???[!_]64 */*
/bin/base64: extra operand 'blargh/flag.txt'
Try '/bin/base64 --help' for more information

 

flag.txt를 표현하기 위해서 앞에 4글자는 ?으로 표시하고 뒤에 .* 으로 어떤 확장자를 가진 파일도 선택할 수 있게끔 glob를 바꿨다. 

그랬더니 base64 인코딩 된 string이 나온다. 

SansAlpha$ /*/???[!_]64 */????.*
cmV0dXJuIDAgcGljb0NURns3aDE1X211MTcxdjNyNTNfMTVfbTRkbjM1NV8xNDUyNTZlY30=

 

base64로 디코딩을 하니 This multiverse is madness라는 flag가 나온다. 

 

base64 -d <<< 'cmV0dXJuIDAgcGljb0NURns3aDE1X211MTcxdjNyNTNfMTVfbTRkbjM1NV8xNDUyNTZlY30='
return 0 picoCTF{7h15_mu171v3r53_15_m4dn355_145256ec}

'picoCTF' 카테고리의 다른 글

ASCII Numbers  (3) 2024.11.06
weirdSnake  (0) 2024.11.06
Verify  (0) 2024.10.29
Trickster  (0) 2024.10.29
findme  (0) 2024.10.29