Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: исправить код

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Chesterfield25
Отправлено: 25 Февраля, 2018 - 18:00:29
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2018  


Помог: 0 раз(а)




Скачал скрипт сайта. Начал проверять на дыры. Мне показало что в файле download.php есть проблемы а именно в строке 240, скидываю скрин и код файла

Нажмите для увеличения


Буду благодарен за любую помощь!

Код
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. /*
  4. =====================================================
  5.  DataLife Engine - by SoftNews Media Group
  6. -----------------------------------------------------
  7.  http://dle-news.ru/
  8. -----------------------------------------------------
  9.  Copyright (c) 2004-2017 SoftNews Media Group
  10. =====================================================
  11.  Данный код защищен авторскими правами
  12. =====================================================
  13.  Файл: download.php
  14. -----------------------------------------------------
  15.  Назначение: Скачивание файлов
  16. =====================================================
  17. */
  18. define ( 'DATALIFEENGINE', true );
  19. define ( 'FILE_DIR', '../uploads/files/' );
  20. define ( 'ROOT_DIR', '..' );
  21. define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );
  22.  
  23. @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
  24. @ini_set ( 'display_errors', true );
  25. @ini_set ( 'html_errors', false );
  26. @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
  27.  
  28. function reset_url($url) {
  29.         $url = (string)$url;
  30.        
  31.         $value = str_replace ( "http://", "", $url );
  32.         $value = str_replace ( "https://", "", $value );
  33.         $value = str_replace ( "www.", "", $value );
  34.         $value = explode ( "/", $value );
  35.         $value = reset ( $value );
  36.         return $value;
  37. }
  38.  
  39. function clear_url_dir($var) {
  40.         $var = (string)$var;
  41.        
  42.         $var = str_ireplace( ".php", "", $var );
  43.         $var = str_ireplace( ".php", ".ppp", $var );
  44.         $var = trim( strip_tags( $var ) );
  45.         $var = str_replace( "\\", "/", $var );
  46.         $var = preg_replace( "/[^a-z0-9\/\_\-]+/mi", "", $var );
  47.         return $var;
  48.        
  49. }
  50.  
  51. require ENGINE_DIR . '/data/config.php';
  52.  
  53. date_default_timezone_set ( $config['date_adjust'] );
  54.  
  55. if ($config['http_home_url'] == "") {
  56.        
  57.         $config['http_home_url'] = explode ( "engine/download.php", $_SERVER['PHP_SELF'] );
  58.         $config['http_home_url'] = reset ( $config['http_home_url'] );
  59.         $config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];
  60.  
  61. }
  62.  
  63. require_once ENGINE_DIR . '/classes/mysql.php';
  64. require_once ENGINE_DIR . '/data/dbconfig.php';
  65. require_once ENGINE_DIR . '/modules/functions.php';
  66.  
  67. dle_session();
  68. $_TIME = time();
  69.  
  70. //################# Определение групп пользователей
  71. $user_group = get_vars ( "usergroup" );
  72.  
  73. if ( !$user_group ) {
  74.        
  75.         $user_group = array ();
  76.        
  77.         $db->query ( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
  78.        
  79.         while ( $row = $db->get_row () ) {
  80.                
  81.                 $user_group[$row['id']] = array ();
  82.                
  83.                 foreach ( $row as $key => $value ) {
  84.                         $user_group[$row['id']][$key] = $value;
  85.                 }
  86.        
  87.         }
  88.        
  89.         set_vars ( "usergroup", $user_group );
  90.         $db->free ();
  91.  
  92. }
  93.  
  94. require_once ENGINE_DIR . '/modules/sitelogin.php';
  95. require_once ENGINE_DIR . '/classes/download.class.php';
  96.  
  97. if ( !$is_logged ) {
  98.         $member_id['user_group'] = 5;
  99. }
  100.  
  101. $id = intval( $_REQUEST['id'] );
  102. $viewonline = intval( $_REQUEST['viewonline'] );
  103. $perm = true;
  104. $onlineview_ext = array('doc', 'docx','odt','pdf','xls','xlsx');
  105. $full_link = $config['http_home_url'];
  106.  
  107. if ($_REQUEST['area'] == "static") {
  108.        
  109.         $row = $db->super_query ( "SELECT static_id, name, onserver FROM " . PREFIX . "_static_files WHERE id ='{$id}'" );
  110.  
  111.         $row_news = $db->super_query ( "SELECT id, name FROM " . PREFIX . "_static WHERE id ='{$row['static_id']}'" );
  112.        
  113.         if ( $row_news['id'] ) {
  114.                
  115.                 if( $config['allow_alt_url'] ) $full_link = $config['http_home_url'] . $row_news['name'] . ".html";
  116.                 else $full_link = $config['http_home_url'] . "index.php?do=static&page=" . $row_news['name'];
  117.                
  118.         } else {
  119.                
  120.                 $perm = false;
  121.                
  122.         }
  123.        
  124. } else {
  125.        
  126.         $row = $db->super_query ( "SELECT news_id, name, onserver FROM " . PREFIX . "_files WHERE id ='{$id}'" );
  127.  
  128.         if ( $row['news_id'] AND !$viewonline ) {
  129.                
  130.                 $row_news = $db->super_query ( "SELECT id, autor, date, category, alt_name, approve, access FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id ='{$row['news_id']}'" );
  131.                
  132.                 if( $row_news['id'] ) {
  133.                        
  134.                         $row_news['date'] = strtotime( $row_news['date'] );
  135.                        
  136.                         if( $config['allow_alt_url'] ) {
  137.                                
  138.                                 if( $config['seo_type'] == 1 OR $config['seo_type'] == 2  ) {
  139.                                        
  140.                                         if( $row['category'] and $config['seo_type'] == 2 ) {
  141.                                                
  142.                                                 $full_link = $config['http_home_url'] . get_url( $row_news['category'] ) . "/" . $row_news['id'] . "-" . $row_news['alt_name'] . ".html";
  143.                                        
  144.                                         } else {
  145.                                                
  146.                                                 $full_link = $config['http_home_url'] . $row_news['id'] . "-" . $row_news['alt_name'] . ".html";
  147.                                        
  148.                                         }
  149.                                
  150.                                 } else {
  151.                                        
  152.                                         $full_link = $config['http_home_url'] . date( 'Y/m/d/', $row_news['date'] ) . $row_news['alt_name'] . ".html";
  153.                                 }
  154.                        
  155.                         } else {
  156.                                
  157.                                 $full_link = $config['http_home_url'] . "index.php?newsid=" . $row_news['id'];
  158.                        
  159.                         }
  160.                        
  161.                         $options = news_permission( $row_news['access'] );
  162.                         if( $options[$member_id['user_group']] AND $options[$member_id['user_group']] != 3 ) $perm = true;
  163.                         if( $options[$member_id['user_group']] == 3 ) $perm = false;
  164.        
  165.                         if ($config['no_date'] AND !$config['news_future'] AND !$user_group[$member_id['user_group']]['allow_all_edit']) {
  166.                
  167.                                 if( $row_news['date'] > $_TIME ) {
  168.                                         $perm = false;         
  169.                                 }
  170.                
  171.                         }
  172.                        
  173.                         $cat_list = explode( ',', $row_news['category'] );
  174.                        
  175.                         if( count($cat_list) ) {
  176.                                
  177.                                 $allow_list = explode( ',', $user_group[$member_id['user_group']]['allow_cats'] );
  178.                                 $not_allow_cats = explode ( ',', $user_group[$member_id['user_group']]['not_allow_cats'] );
  179.                
  180.                                 foreach ( $cat_list as $element ) {
  181.                                                
  182.                                         if( $allow_list[0] != "all" AND !in_array( $element, $allow_list ) ) $perm = false;
  183.                                        
  184.                                         if( $not_allow_cats[0] != "" AND in_array( $element, $not_allow_cats ) ) $perm = false;
  185.                                        
  186.                                 }
  187.                                
  188.                         }
  189.                        
  190.                         if( !$row_news['approve'] AND $member_id['name'] != $row_news['autor'] AND !$user_group[$member_id['user_group']]['allow_all_edit'] ) $perm = false;
  191.                        
  192.                 } else $perm = false;
  193.  
  194.         } elseif ( !$row['news_id'] ) {
  195.                 $perm = false;
  196.         }
  197.  
  198. }
  199.  
  200. if ( !$row['name'] ) {
  201.         die ( "Access denied" );
  202. }
  203.  
  204. if ( !$perm ) {
  205.         die ( "You don't have access to download this file" );
  206. }
  207.  
  208. $url = @parse_url ( $row['onserver'] );
  209.  
  210. $file_path = dirname (clear_url_dir($url['path']));
  211. $file_name = pathinfo($url['path']);
  212. $file_ext  = totranslit($file_name['extension'], true, false);
  213. $file_name = totranslit($file_name['basename'], false);
  214.  
  215. if ($file_path AND $file_path != ".") $file_name = $file_path."/".$file_name;
  216.  
  217. if( stripos ( $file_name, ".php" ) !== false ) {
  218.         die ( "Access denied" );
  219. }
  220.  
  221. if ($viewonline == 1 AND in_array($file_ext, $onlineview_ext) ) {
  222.        
  223.    $config['files_antileech'] = false;
  224.         $user_group[$member_id['user_group']]['files_max_speed'] = 0;
  225.         $user_group[$member_id['user_group']]['allow_files'] = true;
  226.        
  227. }
  228.  
  229. if ( !$user_group[$member_id['user_group']]['allow_files'] ) {
  230.         die ( "Access denied" );
  231. }
  232.  
  233. if ($config['files_antileech']) {
  234.        
  235.         $_SERVER['HTTP_REFERER'] = reset_url ( $_SERVER['HTTP_REFERER'] );
  236.         $_SERVER['HTTP_HOST'] = reset_url ( $_SERVER['HTTP_HOST'] );
  237.  
  238.         if ($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) {
  239.                 @header ( 'Location: ' . $full_link );
  240.                 die ( "Access denied!!!<br /><br />Please visit <a href=\"{$config['http_home_url']}\">{$config['http_home_url']}</a>" );
  241.         }
  242.  
  243. }
  244.  
  245. $file = new download ( FILE_DIR . $file_name, $row['name'], $config['files_force'], intval($user_group[$member_id['user_group']]['files_max_speed']) );
  246.  
  247. if ($_REQUEST['area'] == "static") {
  248.        
  249.         if ($config['files_count'] AND !$file->range) {
  250.                 $db->query ( "UPDATE " . PREFIX . "_static_files SET dcount=dcount+1 WHERE id ='$id'" );
  251.         }
  252.  
  253. } else {
  254.        
  255.         if ($config['files_count'] AND !$file->range) {
  256.                 $db->query ( "UPDATE " . PREFIX . "_files SET dcount=dcount+1 WHERE id ='$id'" );
  257.         }
  258.  
  259. }
  260.  
  261. $db->close();
  262.  
  263. $file->download_file();
  264. ?>
  265.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB