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

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

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

  #1  
Старый 09.12.2007, 17:09
demonoid
Banned
Регистрация: 12.01.2007
Сообщений: 113
Провел на форуме:
4094601

Репутация: 495
По умолчанию

Цитата:
Сообщение от Digimortal  
в винде так не получится... )
а зачем 2 раза -w пишешь вдобавок к тому, что прагму warnings заюзал? )
тупанул с варнингом) решил повыпендриваться
#пс поставил убунту изучаю
 

  #2  
Старый 13.12.2007, 04:47
gizmo
Участник форума
Регистрация: 21.12.2006
Сообщений: 179
Провел на форуме:
1428298

Репутация: 65
По умолчанию

В неком файле на серваке заданы пассы и логины через разделитель. Есть форма, где поля логин и пасс.
проверяем введенные логин и пасс.

для начала написал только проверку логина. ниже приведен код.

Проблема в том, что
Код:
if ($arr[$m]->[$n]==$obtained_login)
выполняется всегда, если первый символ логина - буква. Если цифра - не выполняется.

Объясните, пожалуйста, почему так происходит.


Код HTML:
<html>
<head>
<title>xz</title>
</head>
<body>
<form action="lab20.pl" method="post">
LOGIN <input type="text" name="login"><p>
БЗДЫДЫЩ: <input type="text" name="pass"><p>
<input type="submit" value="check">
</form>
</body>
</html>




Код:
#!/usr/bin/perl    -w
use CGI;
print "Content-type:text/html;charset=windows-1251\n\n";
$q = new CGI;
$obtained_login = $q->param('login');
$obtained_password = $q->param('pass');
open(DATA, "users.txt");
$i=0;
foreach $line(<DATA>)
{
	$j=0;
      @temp=split (/;/,$line);
	while	($j<=$#temp)
		{
		$arr[$i]->[$j]=$temp[$j];
		$j++;
		}
                   	$i++;
}
close(DATA);
for($m=0; $m<$i; $m++)
{

 for ($n=0;$n<$j; $n++)
       {
 	if ($arr[$m]->[$n]==$obtained_login)
        {
         print "good";
        }
         else { print "bad";}

 }
}
 

  #3  
Старый 13.12.2007, 05:02
C!klodoL
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
Провел на форуме:
4319431

Репутация: 677
По умолчанию

Цитата:
Код:

if ($arr[$m]->[$n]==$obtained_login)


выполняется всегда, если первый символ логина - буква. Если цифра - не выполняется.
я не проверял, но по моему дело в чисельном сравнении ==, попробуй строкове eq
 

  #4  
Старый 13.12.2007, 05:06
gizmo
Участник форума
Регистрация: 21.12.2006
Сообщений: 179
Провел на форуме:
1428298

Репутация: 65
По умолчанию

Цитата:
Сообщение от C!klodoL  
я не проверял, но по моему дело в чисельном сравнении ==, попробуй строкове eq
C!klodoL, ты прав, спасибо, очень оперативно!
проблема решена, всем спасибо.
 

  #5  
Старый 13.12.2007, 05:44
gizmo
Участник форума
Регистрация: 21.12.2006
Сообщений: 179
Провел на форуме:
1428298

Репутация: 65
По умолчанию

а как бы его так аккуратно дописать, что б и пароль проверял?
я дописал, но сам баг через 5 минут нашел.
 

  #6  
Старый 13.12.2007, 06:21
C!klodoL
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
Провел на форуме:
4319431

Репутация: 677
По умолчанию

мне было проще переписать занова, надеюсь это то что ты имел ввиду
Код:
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);

my $cgi = CGI->new();
my $login = $cgi->param('login');
my $pass = $cgi->param('pass');
print $cgi->header(-charset => 'UTF-8');
if ($login && $pass) {
	readdata();
} else {
	 print $cgi->start_html('Fuck you hacker!'),
	      $cgi->start_center,
	      $cgi->h1('Fuck you hacker!'),
	      $cgi->end_html;
}

sub readdata {
	open(my $data, '<users.txt');
	while(<$data>) {
		if (/$login;$pass/) {
			print $cgi->start_html('GOOD!'),
			      $cgi->start_center,
			      $cgi->h1('GOOD!'),
			      $cgi->end_html;
			close $data;
			exit
		}
	}
	print $cgi->start_html('BAD!'),
	      $cgi->start_center,
	      $cgi->h1('BAD!'),
	      $cgi->end_html;
}
результат испытаний;
http://localhost/cgi-bin/lol.pl?login=root&pass=432 пишет BAD;
http://localhost/cgi-bin/lol.pl?login=root&pass=pass пишет GOOD
если вызвать без параметров то - F*ck you hacker!
 

  #7  
Старый 18.12.2007, 11:41
Zhenek
Banned
Регистрация: 09.11.2007
Сообщений: 20
Провел на форуме:
87035

Репутация: 2
По умолчанию

Помогите..
Я немогу установить Mail::POP3Client
У меня есть сама библиотека а не ссылка для ее скачки и установки.... Помогите..
 

  #8  
Старый 18.12.2007, 11:48
C!klodoL
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
Провел на форуме:
4319431

Репутация: 677
По умолчанию

консоль; ppm, ppm> install Mail::POP3Client
 

  #9  
Старый 18.12.2007, 12:28
Zhenek
Banned
Регистрация: 09.11.2007
Сообщений: 20
Провел на форуме:
87035

Репутация: 2
По умолчанию

А куда сами файлы кидать???
там 2 папки:

cgi-shl
htdocs

в каждой папка qdpop а в ней куда *.pl и др файлы.
 

  #10  
Старый 18.12.2007, 12:32
C!klodoL
Постоянный
Регистрация: 05.06.2007
Сообщений: 335
Провел на форуме:
4319431

Репутация: 677
По умолчанию

ты на хостинг чтоли модуль хочешь поставить? на хостинг может поставить только сам хостер, попробуй просто положить модуль в одной папке со скриптом его использующим, сами файлы в cgi-shl
 
 





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


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




ANTICHAT.XYZ