HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.01.2009, 13:03
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от mad_dog  
так а кто может обучить Чайника!?
Дядя Cpacha. Иди ищи соседние темы,там есть видео и статьи...а лучше всего,как мне однажды сказали,"иди долб**** на ru.php.net там все есть!"...
 
Ответить с цитированием

  #2  
Старый 12.01.2009, 19:21
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Посмотри содержимое файла в блокноте, наверняка там какой-то не регулярный контент... В смысле, того файла, который тебе отдаёт скрипт... Скрипт хоть в одной папке с файлами лежит?
 
Ответить с цитированием

  #3  
Старый 12.01.2009, 19:27
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Question

Цитата:
Сообщение от groundhog  
Посмотри содержимое файла в блокноте, наверняка там какой-то не регулярный контент... В смысле, того файла, который тебе отдаёт скрипт... Скрипт хоть в одной папке с файлами лежит?
Нет не в одной! вот скрипт:
PHP код:
<?php include("db.php");
if (isset(
$_POST['vibor'])) { $vibor $_POST['vibor'];}
if (isset(
$_POST['load'])) { $adres $_POST['load'];}
$result1 mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!
$result1)
{
exit(
mysql_error());
}
if (
mysql_num_rows($result1) > 0)
{
$myrow1 mysql_fetch_array($result1);
$mas getimagesize($adres);

$width 215;
$heigth $mas[1]+270;
$adres1 "admin/".$myrow1['url'];
$im imagecreatetruecolor($width$heigth);

$im1 imagecreatefromjpeg($adres);
$im2 imagecreatefromjpeg('logo.jpg');
$im3 imagecreatefromjpeg($adres1);
$i=1;
$name "avat".$i++.$myrow1['name'];
imagecopy($im$im20$mas[1], 0021520);
imagecopy($im$im10000215$mas[1]);
imagecopy($im$im30$mas[1]+2000215350);

//размеры аватарки
    
$width imagesx($im);
    
$height imagesy($im);
//добавляем уголки
$tl imagecreatefrompng('tl.png'); //top left
$tr imagecreatefrompng('tr.png'); //top right
$dl imagecreatefrompng('dl.png'); //down left
$dr imagecreatefrompng('dr.png'); //down  right
//размеры уголков (предпологается, что размер углов одинаковый )
    
$w imagesx($tl);
    
$h imagesy($tl);
imagecopy($im$tl0000$w$h);
imagecopy($im$tr$width-$w000$w$h);
imagecopy($im$dl0$height-$h00$w$h);
imagecopy($im$dr$width-$w$height-$h00$w$h);

imagejpeg($im,"avatar/$name");
imagedestroy($im);
}
else
{
exit();
}

printf("<a href='get.php?file=avatar/$name'><img src='avatar/$name' alt=''/></a>");
?>
PHP код:
<?php
if(!empty($_GET['file'])){
    
$filename basename($_GET['file']);

    @
header('Content-Disposition: attachment; filename="'.$filename.'"');
    @
header('Content-Type: application/x-force-download; name="'.$filename.'"');

     
readfile($filename);
}
?>
 
Ответить с цитированием

  #4  
Старый 12.01.2009, 19:53
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Ну смотри - readfile($filename) у тебя написано. Но перед этим ты делаешь $filename = basename($_GET['file']), то есть отсекаешь всё кроме имени файла... Таким образом твой скрипт отдаёт хидеры и пытается читать контент файла из той директории, в которой он находится сам... Попробуй вот так:

Код:
<?php
if(!empty($_GET['file'])){
    $filename = trim($_GET['file']);

    @header('Content-Disposition: attachment; filename="'.basename($filename).'"');
    @header('Content-Type: application/x-force-download; name="'.basename($filename).'"');

     readfile($filename);
}
?>
Но учти, что в таком случае скрипт является include уязвимым... Тогда уже так делай:

Код:
<?php
if(!empty($_GET['file'])){
    $filename = trim($_GET['file']);

    @header('Content-Disposition: attachment; filename="'.basename($filename).'"');
    @header('Content-Type: application/x-force-download; name="'.basename($filename).'"');

     readfile(dirname(__FILE__) . '/' . $filename);
}
?>

Последний раз редактировалось groundhog; 12.01.2009 в 20:01..
 
Ответить с цитированием

  #5  
Старый 12.01.2009, 20:20
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Question

groundhog Спасибо так работает!

А как избавиться от иклуд??

Pregmatch-ем можно?
 
Ответить с цитированием

  #6  
Старый 12.01.2009, 20:26
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Вот так замути

Код:
<?php
if(!empty($_GET['file']) && file_exists($_GET['file'])){
    $filename = trim($_GET['file']);

    @header('Content-Disposition: attachment; filename="'.basename($filename).'"');
    @header('Content-Type: application/x-force-download; name="'.basename($filename).'"');

     $filename = str_replace('..', '', $filename);
     readfile(dirname(__FILE__) . '/' . $filename);
}
?>
 
Ответить с цитированием

  #7  
Старый 12.01.2009, 20:40
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Question

Цитата:
Сообщение от groundhog  
Вот так замути

Код:
<?php
if(!empty($_GET['file']) && file_exists($_GET['file'])){
    $filename = trim($_GET['file']);

    @header('Content-Disposition: attachment; filename="'.basename($filename).'"');
    @header('Content-Type: application/x-force-download; name="'.basename($filename).'"');

     $filename = str_replace('..', '', $filename);
     readfile(dirname(__FILE__) . '/' . $filename);
}
?>

А гет файл по моему тоже не проверяется это же инъекция по моему?
 
Ответить с цитированием

  #8  
Старый 12.01.2009, 20:45
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

ну если ты это в базу не пишешь, то нету инъекции
 
Ответить с цитированием

  #9  
Старый 12.01.2009, 21:05
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Wink

groundhog Спасибо тебе
 
Ответить с цитированием

  #10  
Старый 12.01.2009, 21:06
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Гавно вопрос, обращайся если что
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ