(도저히 모르겠어서 다른 write up 참고했다.)
initramfs를 보면, 서버 바이너리가 시작할 때 작동되고, 4433 포트에 자동으로 연결되는 것을 알 수 있다. 그리고 SSL을 통해 서버에 연결하여 integer(정수)를 읽고 이를 다시 echo(출력)하면 flag가 출력되면 문제를 해결할 수 있다고 한다. 하지만 이 파일시스템은 SSL에 연결하기 위한 툴은 가지고 있지 않고, 파일에 쓰기가 불가능한 것 같다. 그래도 busybox 설치는 netcat을 포함하는데, busybox nc <server> <port> 형식으로 명령어를 입력해 busybox를 실행하면 netcat을 호출할 수 있으며, 상호/대화적으로 TCP 포트에 연결될 수 있다고 한다.
<문제 풀이>
먼저 localhost 5001포트에 netcat으로 대화적으로 연결했다. POW를 제공하고 원격기기에서 아래와 같이 명령어를 실행했다.
$ socat TCP4:babyshell.hackable.software:1337 TCP4-LISTEN:5001,reuseaddr,fork
그리고 localhost:5001 연결을 끊었다. (소켓은 백그라운드에서 계속 실행되고 있고 연결도 이 challenge 서버가 살아있는 한 이루어지고 있다.)
$ stty raw -echo
$ busybox nc localhost 4433
마지막으로, s_client를 이용해 localhost:5001에 연결하고, SSL 연결을 이루어지게 한 후, 정수를 읽는다. (여기서 정수는 항상 0으로 나온다.)
그리고 니가 0을 다시 보내면, flag가 나올 것이다~
$ openssl s_client -connect localhost:5001
<...>
---
read R BLOCK
0
0
DrgnS{Shellcoding_and_shellscripting_whats_not_to_like}
closed