私は一種のハッキングチャレンジをしていましたが、そのうちのいくつかは私が命令の少ない制限されたシェルに閉じ込められていることを発見しました。利用可能なコマンドの1つはですecho
。何時間も苦労して最後にいくつかのヒントを追加することにしました。これはあなたが限られた殻から抜け出すことがわかりましたecho os.system('/bin/bash')
...これを見た後にGoogleで検索することができましたが、あなたが見つけることができる以外にそれに関する情報は見つかりませんでした。何か限られたシェルの状況。 zshとbashで試してみると、端末では機能しません。なぜこれはまだ機能しますか?このos.system
部分は私がPythonのように見えます。誰かが私に背景知識を教えてもらえますか?これがPythonなら、echoでどのように使用できますか?
答え1
これが問題だと思います。シェル0.9.15、Pythonで実装された制限されたシェルです。
脆弱な機能は、check_path()
コマンドラインからユーザーが特定のパスにアクセスできることを確認する機能です。
問題は、この関数がeval()
コマンドラインから引用符を削除する方法として使用されることです。この関数は有効なPython式も幸せに実行します。
行項目の場合: #潜在的な引用符を削除します 努力する: プロジェクト=評価(プロジェクト) とは別に: 渡す
この問題は、後で呼び出しを正規表現に置き換えることで、次のコミットでeval()
解決されました。https://github.com/ghantoos/lshell/commit/4e05ac2e9c12142beed0e0fa16331ee0fd7dbd42#diff-edb4dda47bc5b086988a93df2615df6f