str_replace関数のバイパス
実験環境DVWA、セキュリティメディア
プログラマが防御のためにstr_replace関数を使用することがあります。この関数は、二重書き込みバイパス置換ルールを使用して簡単にバイパスできるため、非常に安全ではありません。
バイパス方法
たとえば、page = hthttp:// tp://192.168.0.103/phpinfo.txtの場合、str_replace関数はhttp://を削除するため、page = http://192.168.0.103/phpinfo.txtの場合、リモートコマンドは正常に実行されます。
同時に、 "... /"と "... \"のみが置き換えられるため、絶対パスを含むファイルを含めることに制限はありません。
3つの例
1.ローカルファイルに
http://192.168.0.103/dvwa/vulnerabilities/fi/page=…/./…/./…/./…/./…/./…/./…/./… が含まれている/./…/./…/./Xampp/htdocs/dvwa/php.ini2
.絶対パスはまったく影響を受けません
http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs /dvwa/php.ini
3.リモートファイルには
http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p5.12.1phpphp.txt が含まれています
切り捨てられたバイパスを含む
防衛コード
<?php
if(isset($_GET['page'])){
include $_GET['page'] .".php" ;
}else{
include 'home.php';
}
?>
パラメータが割り当てられているかどうかを判断し、値が割り当てられている場合はパラメータ変数を含め、.......防御のためのphpを追加します。コピーされていない場合は、home.phpを含めます。
このメソッドは、magic_quotes_gpc = offの場合にのみ適してい
ます。 4.これは、%00の切り捨てによってバイパスできますが、次のように、今ではわかりにくいです。
index.php?file=info.txt//////////////…………超过一定数据的/。
個人的な考え
防御手段を回避することは、単に傍受されないだけでなく、可能な防御手段を使用し、他者の手段を自分のものとすることで、一部の防御手段を簡単に回避できる場合があります。