| 
                         如果已经弃用的 register_globals 指令被设置为 on 那么局部变量也将在脚本的全局作用域中可用。例如, $_POST['foo'] 也将以  $foo 的形式存在。这将会造成一些变量覆盖,条件判断绕过。以下是简化的全局变量认证绕过模型: 
- if(authenticated_user()){ 
 -     $authorized=true; 
 - } 
 - if($authorized){ 
 -     do something...... 
 - } 
 
  
对于以上的绕过,我们可以有以下的规避措施:(1) php.ini register_globals=off(2) 在每次判断前初始化变量,如下: 
- $authorized=false; 
 -  
 - if(authenticated_user()){ 
 -     $authorized=true; 
 - } 
 - if($authorized){ 
 -     do something...... 
 - } 
 
  
3. php伪协议 
伪协议在很多绕过场景下发挥着举足轻重的作用,如后面提到的文件包含file://协议绕过,以及最近才提出的phar协议反序列化对象注入,我们可以在不存在可控unserialization()函数的情况下利用phar反序列化对象,实现对象注入。所以在web应用中不要忽视他们的存在,千里之堤,溃于蚁穴。 
    - file:///var/www/html 访问本地文件系统
 
    - ftp://:@ 访问FTP(s) URLs
 
    - data:// 数据流
 
    - http:// — 访问 HTTP(s) URLs
 
    - ftp:// — 访问 FTP(s) URLs
 
    - php:// — 访问各个输入/输出流
 
    - zlib:// — 压缩流
 
    - data:// — Data (RFC 2397)
 
    - glob:// — 查找匹配的文件路径模式
 
    - phar:// — PHP Archive
 
    - ssh2:// — Secure Shell 2
 
    - rar:// — RAR
 
    - ogg:// — Audio streams
 
    - expect:// — 处理交互式的流
 
 
四、向DVWA学习php安全的代码编写 
以下样例来自于DVWA v1.9版本 
1. sql注入 
(1) Low level 
- <?php  
 -  
 - if( isset( $_REQUEST[ 'Submit' ] ) ) {  
 -     // Get input  
 -     $id = $_REQUEST[ 'id' ];  
 -  
 -     // Check database  
 -     $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";  
 -     $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );  
 -  
 -     // Get results  
 -     $num = mysql_numrows( $result );  
 -     $i   = 0;  
 -     while( $i < $num ) {  
 -         // Get values  
 -         $first = mysql_result( $result, $i, "first_name" );  
 -         $last  = mysql_result( $result, $i, "last_name" );  
 -  
 -         // Feedback for end user  
 -         echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";  
 -  
 -         // Increase loop count  
 -         $i++;  
 -     }  
 -  
 -     mysql_close();  
 - }  
 -  
 - ?> 
 
                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |