ファイルを実行可能にすることなく編集

ファイルを実行可能にすることなく編集

secretinfo.txtディレクトリ内のファイルを編集しようとしています。SensitiveData

現在のディレクトリとファイルには、次の権限があります。

drwx------ 2 www-data root 4096 Apr 20 17:39 SensitiveData
-rw------- 1 www-data root 28 Apr 20 17:20 secretinfo.txt

ファイルとディレクトリは、コマンドインジェクション攻撃に脆弱なApache Webサーバーを実行しているUbuntuVMにあり(これは私が練習しているプラ​​イベートVMです)、コマンドcat /var/SensitiveData/secretinfo.txt出力を注入できましたMy bank account pin is 4565。同じコマンド注入技術を使用してピンを変更してみましたが、成功しませんでした。これまで、次のコマンドを試しましたが、テキストファイルは変更されません。

sed -i ‘s/4565/1111/’ /var/SensitiveData/secretinfo.txt
cat /var/SensitiveData/secretinfo.txt | sed -i ‘s/4565/1111/’ > /var/SensitiveData/secretinfo.txt

sedを使用すると何か抜けましたか?それとも別のコマンドを使用してテキストを置き換える必要がありますか?最初のコマンドは何もしませんが、2番目のコマンドは空のファイルを上書きして作成します。

ベストアンサー1

ファイルsecretinfo.txtの長さは81文字です。内容を見るとcat一部だけが表示されます。

4565その理由の1つは、複数の文字列があり、表示された文字列ではなく隠された文字列を置き換えることである可能性があります。したがって、各行の最初の文字列だけでなく、可能なすべての文字列を置き換えます。

sed -i ‘s/4565/1111/g’ /var/SensitiveData/secretinfo.txt

もう一つの理由は、表示された文字の間に見えない文字があるためです。hd()コマンドを使用してファイルの正確な内容をhexdump確認してください。secretinfo.txtこれでのみ関連sedコマンドを作成できます。

しかし、これをしないでください:

cat /var/SensitiveData/secretinfo.txt | sed -i ‘s/4565/1111/’ > /var/SensitiveData/secretinfo.txt

まず、ファイルの変更中にファイルを読み込んでいます(一部の条件では機能できますが制御できない状況であることを考慮して、この構成を避けてください)。

第二に、-iオプションはファイルを引数として必要とし、コマンドは出力を生成しないため、リダイレクトはファイルを消去します。

おすすめ記事