• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проверка ( проверяет следующее значение )

  • Автор темы LazyC0d3
  • Дата начала
L

LazyC0d3

Я сделал что-то вроде капчи, просто складываешь цифры пишешь ответ и нажимаешь кнопку ( даётся в виде картинок ), но у меня проблема, что при нажатии на кнопку он проверяет не текущее сообщение которое я ввел в поле а следующее ( и естественно ответ не верный ) Как можно эту вещь исправить.

Там что-то типо регистрации. Если надо могу выложить код.
У меня была идея записи ответа в какую либо переменную..не сработало.
Я ещё начинающий в программировании так что особо жутко не шпыняйте
Сидел дня 2, немогу уже, наконец понял что к чему но незнаю как решить

HELP! B)
 
A

acorn

LazyC0d3
Записывай значение в переменную сессии.
 
L

LazyC0d3

Регистрация:
PHP:
<?
session_start();
if(isset($_GET['nick']))
{
$res=proverka();
/*echo "res-$res";*/
if($res==1) zapis();
else forma($res);
}
else forma(0);

function forma($err)
{
?>
<?
switch($err)
{
case 2: echo "<center><font color=red>Empty field</font></center>";
break;
case 3: echo "<center><font color=red>	Data lenght is bad</font></center>";
break;
case 4: echo "<center><font color=red>	Password not equals</font></center>";
break;
case 5: echo "<center><font color=red>	User with that name already exists, please change username</font></center>";
break;
case 6: echo "<center><font color=red>	CAPTCHA!!!111</font></center>";

}
?>
<center>
<table width="500" border="1">
<form>
<input type="hidden" name="page" value="reg">
<tr>
<td> Username:<font color="#FF0000"> *</font></td>
<td colspan="2px" align="left"> <input type="text" name="nick" style="width: 310px"></td>
</tr>
<tr>
<td> Password:<font color="#FF0000"> *</font></td>
<td align="left" style="padding-left: 7px">Password:  <input type="password" name="pass1"></td>
<td align="left" style="padding-left: 7px">Retype password:  <input type="password" name="pass2"></td>
</tr>
<tr>
<td> Sex:</td>
<td colspan="2px"><!-- <input type="radio" name="sex" value="Men"> Men<br><input type="radio" name="sex" value="Women"> Women -->
<left>
 <select name="sex" style="width: 314px;">
<option value="none" selected>
<option value="men">Men
<option value="women">Women
</select>
</left>
</td>
</tr>
<tr>
<td> Town:</td>
<td colspan="2px" align="left"> <input type="text" name="town" style="width: 310px"></td>
</tr>
<tr>
<td> <?php include('captcha2.php'); ?></td>
<td colspan="2px" alighn="left"> <input type="text" name="captcha" style="width: 310px" value="<?php echo "$rez"; ?>"></td>
</tr>
<tr>
<td><center><input type="submit" name="OK" title="Зарегистрироваться" value="Зарегистрироваться"></center></td><td><input type="reset" title="Очистить" value="Очистить все поля"></td>
</tr>
</table>
</form>
</center>
<?
switch($err)
{
case 2: echo "<center><font color=red>Empty field</font></center>";
break;
case 3: echo "<center><font color=red>	Data lenght is bad</font></center>";
break;
case 4: echo "<center><font color=red>	Password not equals</font></center>";
break;
case 5: echo "<center><font color=red>	User with that name already exists, please change username</font></center>";
break;
case 6: echo "<center><font color=red>	CAPTCHA!!!</font></center>";
}

}

function proverka()
{
$nick=trim($_GET['nick']);
$pass1=trim($_GET['pass1']);
$pass2=trim($_GET['pass2']);
if($nick=="" || $pass1=="" || $pass2=="")
return 2;
if(strlen($nick)<6 || strlen($pass1)<6 || strlen($pass2)<6)
return 3;
if($pass1!=$pass2)
return 4;
include('conn.php');
$sel="SELECT id FROM vdjagilev_users WHERE username='$nick'";
$res=mysql_query($sel,$link) or die($sel);
if(mysql_num_rows($res)>0) 
return 5;

//global $rez;
//$captcha=trim($_GET['captcha']);
//if($captcha != $rez) //|| $mcaptcha!=$rez_if_2 || $mcaptcha!=$rez_if2_1 || $mcaptcha!=$rez_if2_2 || $mcaptcha!=$rez_if_eq)
return 6;

return 1;
}

function zapis()
{ 
include ('lib2.php');
$a=genArray(4,4,1,6);
$s=serialArray($a);
include ('conn.php');
$nick=trim($_GET['nick']);
$pass=trim($_GET['pass1']);
$sex=trim($_GET['sex']);
$town=trim($_GET['town']);
$ip = $_SERVER['REMOTE_ADDR'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$port = $_SERVER['REMOTE_PORT'];
$sel="INSERT INTO vdjagilev_users (username,passwd,date_reg,random_user_reg_num,town,sex,ip,useragent,port) VALUES ('$nick','$pass',now(),'$s','$town','$sex','$ip','$useragent','$port')";
mysql_query($sel,$link) or die($sel);
echo "<center><font color=red><b>Registration OK</b></font></center>";
}
?>


А вот что-то на подобие "капчи":
PHP:
<?php
session_start();
$num1 = Rand(0,10);
$num2 = Rand(0,10);
$wha = array('+','-');
$img = array('./cap/cap0.jpg','./cap/cap1.jpg','./cap/cap2.jpg','./cap/cap3.jpg','./cap/cap4.jpg','./cap/cap5.jpg','./cap/cap6.jpg','./cap/cap7.jpg','./cap/cap8.jpg','./cap/cap9.jpg','./cap/cap10.jpg');
$img1 = array('./cap/cap0.jpg','./cap/cap1.jpg','./cap/cap2.jpg','./cap/cap3.jpg','./cap/cap4.jpg','./cap/cap5.jpg','./cap/cap6.jpg','./cap/cap7.jpg','./cap/cap8.jpg','./cap/cap9.jpg','./cap/cap10.jpg');
if($num1>$num2)
{
$whado = $wha[Rand(0,1)];
if($whado=='+')
{
$rez=$num1+$num2;
echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num2]'>"; echo $rez . "<br>";
echo "$num1 + $num2 = ";
// echo $num1+$num2;
}
if($whado=='-')
{
$rez=$num1-$num2;
echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/minus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num2]'>"; echo $rez . "<br>";
echo "$num1 - $num2 = "; 
// echo $num1-$num2;
}
//$ans = $num1.$whado.$num2;
//echo "$num1 " . $wha[Rand(0,1)] . " $num2 =" . $ans;
//echo $whado . " IF 1";
}
if($num2>$num1)
{
$whado = $wha[Rand(0,1)];
if($whado=='+')
{
$rez=$num2+$num1;
echo "<img width='35' height='35' src='$img[$num2]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
echo "$num2 + $num1 = "; 
// echo $num2+$num1;
}
if($whado=='-')
{
$rez=$num2-$num1;
echo "<img width='35' height='35' src='$img[$num2]'>"; echo "<img width='35' height='35' src='./cap/minus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
echo "$num2 - $num1 = "; 
// echo $num2-$num1;
}
}
if($num1==$num2)
{
$rez=$num1+$num1;
echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
echo "$num1 + $num2 = "; 
//echo $num1+$num2;
}
/*if($num1<=$num2)
{
$whado = $wha[Rand(0,1)];
if($whado=='
//echo $whado1 . " IF 2";
//echo "$num2 " . $wha[Rand(0,1)] . " $num1 =" . $num1 . $wha[Rand(0,1)] . $num2;
}
*/
?>
 
A

acorn

LazyC0d3
я уже ответил на ваш вопрос
 
L

LazyC0d3

А можно на примере?))) Как это реализовать какую именно переменную? Хотябы кусок кода и куда его вставить? Буду признателен
 
L

LazyC0d3

Всё! Большое спасибо! Понял как решить!
Вообщем добавил в конец captcha.php строку:

PHP:
$_SESSION['captcha']=$rez;

А в реге добавил проверку:

PHP:
if($_SESSION['captcha']!=$_GET['captcha'])

Acorn Спасибо большое за подсказку
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!