Как взломать сайт?

  • Автор темы Автор темы abdyla_v
  • Дата начала Дата начала
A

abdyla_v

Есть два поля и внопка :
Код:
.................................................. ..
.................................................. ..
<table class="wide_table">
<tr>
<td class="side_td"></td>
<td class="lable_td">Введите логин</td>
<td class="form_td"><input type=text name=login></td>
<td class="side_td"></td>
</rt>
<tr>
<td class="side_td"></td>
<td class="lable_td">Введите пароль</td>
<td class="form_td"><input type=password name=passwd></td>
<td class="side_td"></td>
</tr>
</table>
.................................................. ..
.................................................. ..
<p align="center">
<input type=submit value=Войти name=submit id=submit class="button">
.................................................. ..
.................................................. ..
При нажатии на кнопку входа выполняется код:

Код:
if (isset($submit))
{
$query = "SELECT * FROM users WHERE login='$login'";
if ($result = mysql_query($query,db_connect())) 
{ 
if (mysql_num_rows($result) > 0)
{
if ($user=mysql_fetch_array($result)) 
{
$temp_id=$user["id"];
$query2="SELECT * FROM users,groups,user_group WHERE user_group.id_user=$temp_id AND user_group.id_group=groups.id";
$result2=mysql_query($query2,db_connect());
if ($groups=mysql_fetch_array($result2))
{
if ($login === $user["login"]) 
{
if (md5($passwd) === $user["passwd"]) 
{
session_start();
$cur_user=$user["login"];
$cur_group=$groups["groups"];
$cur_user_group_c=gzcompress(serialize($groups));
setcookie("cur_user_group_c",$cur_user_group_c,tim e()+7200);
setcookie("cur_group",$cur_group,time()+7200);
setcookie("cur_user",$cur_user,time()+7200);

//session_register('cur_user_group');
?><script language="javaScript">
document.location.replace("main.php");
</script>
<?
exit;
} 
else {print "<center><font size=5 color=#CC0000>Неправильный пароль!!!</font></center>";}

}
else {print "<center><font size=5 color=#CC0000>Неправильный логин!!!</font></center>";}
}
else {print mysql_error();}
}
}
}
else {die("Couldn't retrieve authorization data, please try again later");}
}

ВОПРОС: Можна ли взломать такую реализацию! Тобиш ввести в поля ввода такие значия чтобы мы смогли перейти на main.php.
 
попробуй всякие injection популярные. вот и проверишь.
 
гг... отсканируй сервер, скан выложи сюда :) будем курить
 
Можно, просто ввести main.php в браузере =)

Код:
<script language="javaScript">
document.location.replace("main.php");
</script>
Ужос.

1. Учи функцию header();
2. Учи $_GET, $_POST
3. Учи register_globals
4. Учи mysql_escape_string
5. Вместо cookie используй сессии.
 
Что там схвачено? Я куки подделаю и всё, main.php меня воспримет.
 
Для: abdyla_v
[подправлено]
использование $login в первом запросе позволяет вставить в него что-то вроде:
'; SELECT 1 as UserID, <md5> as passwd; --'
что вообще не есть хорошо.
 
abdyla_v
Ну собвственно опять повторюсь:

1. Учи функцию header();
2. Учи $_GET, $_POST
3. Учи register_globals
4. Учи mysql_escape_string
5. Вместо cookie используй сессии
 
Что там схвачено? Я куки подделаю и всё, main.php меня воспримет.
Что значит подделаю там есть такой код:

Код:
if (!isset($cur_user))

{

?><script language="javaScript">

document.location.replace("index.php");  						

</script><?

exit;

}

Товарищи я понимаю что это все не хорошо! Но пожалуйста напишите мне все лиш две строки которое это все доказывает!
Тоесть я так понимаю что можна в поле "Логин" ввести например строку 1' OR '1'='1 и всё выполнится?.
Что мне нужно ввести в поля "Логин" и "Пароль" что бы я смог пройти даную защиту! (Для даного примера!) Можна это зделать или нет!
 
Код приведи своего main.php, первый файл который ты скинул ты скинул как назывался? Телепатов тут нет.

PS. Твой код выглядел бы хорошо во времена PHP 3, а сейчас уже пора писать нормально и отказатся от register_globals, а использовать $_GET и $_POST, ты еще естественно рассчитываешь на magic_quotes_gpc, а надо бы использовать mysql_escape_string. Зачем использовать javascript для перехода, если для этого люди придумали HTTP заголовки, реализуемые через header в php. 21 век на дворе как-никак.
 
<!--QuoteBegin-abdyla_v+23:07:2007, 14:32 -->
<span class="vbquote">(abdyla_v @ 23:07:2007, 14:32 )</span><!--QuoteEBegin-->Что значит подделаю там есть такой код:
[snapback]73057" rel="nofollow" target="_blank[/snapback]​
[/quote]Мегакод. ломается нажатием кнопки escape при заходе на "защищенную" страницу.
 
Для: MajestiC
Зато я учел, что создать cookie с именем "cur_user" - это очень просто.
 
Ну вот для этого я и хотел увидеть код main.php =)
 
Код который я привел в первый раз из файла - Index.php
Теперь привожу - main.php :
Код:
<?
include "header.php";
include("options.php");
?>
<body class='main_page'>

<table width="100%" border="0">

<tr valign="top">

<td align="left">

<fieldset class=fieldset_left_class title='tasks'><legend class=main_caption><?=msg('project_menu_name')?></legend>
<?	

if ($cur_user_group["cr_del_projects"]==1)

{

print "<a href='add_projects.php' class='A_table'>".msg('main_menu_create_project')."</a><br>";

}

print "<a href='show_projects.php' class='A_table'>".msg('main_menu_view_projects')."</a><br>";

?>



</fieldset>

</td>

<td align='left'>



<?

if ($cur_user_group["cr_del_users"]==1 || $cur_user_group["cr_del_groups"]==1 || $cur_user_group["cr_del_tasks"]==1) 

{

print "<fieldset class=fieldset_right_class title='tasks'>";

print "<legend class=main_caption>".msg('header_menu_tasks')."</legend>";

if ($cur_user_group["cr_del_users"]==1) print "<a href='add_users.php' class='A_table'>".msg('main_menu_create_user')."</a><br>";

if ($cur_user_group["cr_del_groups"]==1) print "<a href='add_group.php' class='A_table'>".msg('main_menu_create_group')."</a><br>";

if ($cur_user_group["cr_del_tasks"]==1) print "<a href='add_tasks.php' class='A_table'>".msg('main_menu_create_task')."</a><br>";

print "</fieldset>";

}

?>



</td>

</tr>

<tr align='top'>

<td>

<fieldset class=fieldset_left_class title='tasks'><legend class=main_caption><?=msg('condition_menu_external')?></legend>



<?

if($cur_user_group['cr_del_tasks']==1)

{

print "<a href='add_conditions.php' class='A_table'>".msg('main_menu_create_condition')."</a><br>";

}

print "<a href='show_conditions.php' class='A_table'>".msg('main_menu_view_conditions')."</a><br>";

?>
</fieldset>

</td>

<td align='left'>

</td>

</tr>

</table>

<?

footer();

?>

Также привожу код header.php

Код:
<?

if (!isset($cur_user))

{

?><script language="javaScript">

document.location.replace("index.php");  						

</script><?

exit;

}



include("options.php");

include("functions.php");

include("localisation.php");



session_start();



//--- Определение языки

$result=mysql_query("SELECT * FROM users WHERE login='$cur_user'",db_connect());

if ($user=mysql_fetch_array($result))

{

switch ($user['lang'])

{

case 'Русский':

$LANGUAGE='Русский';

break;

case 'English':

$LANGUAGE='English';

break;

case 'Українська':

$LANGUAGE='Українська';

break;

}

}

else {print mysql_error();}

//---



//**********--ВЫБОР ПРОЕКТА--*******************************************************

if (isset($project))

{

$result=mysql_query("SELECT * FROM projects WHERE projects='$project'",db_connect());

$cur_project=mysql_fetch_array($result);

session_register('cur_project');

}

if (!isset($cur_project)) 

{

$result=mysql_query("SELECT* FROM projects",db_connect());

$cur_project=mysql_fetch_array($result);

session_register('cur_project');

}

//********************************************************************************
*



//**************--Опреднление группы пользователя--*********************************

if (isset($cur_group)) 

{

$result2=mysql_query("SELECT * FROM groups WHERE groups='$cur_group'",db_connect());

$cur_user_group = mysql_fetch_array($result2);

session_register('cur_user_group');

}

//********************************************************************************
*

?>

<html>



<head>

<link rel=stylesheet type=text/css href=styles.css>

<meta http-equiv="Content-Language" content="ru">

<meta http-equiv="Content-Type" content="text/html; charset=<?=$charset?>">

<title>Task Manager</title>



<script src="scripts/clock.js" type="text/javascript" Language="JavaScript">

</SCRIPT>



<script Language="JavaScript">

<!-- hide from old browsers

function loadPage(pageURL){

location.href = pageURL.options[pageURL.selectedIndex].value;

}

//-->

</SCRIPT>



<script SRC="scripts/sortTable.js">

</SCRIPT>



<script SRC="scripts/alert.js">

</SCRIPT>



<script language="JavaScript1.2">

var head="display:''"

function doit(header){

var head=header.style

if (head.display=="none")

head.display=""

else

head.display="none"

}

</script>



</head>



<body class="main_page" onload="myclock(); initTable('table0');">

<div id="clockexam" style="position:absolute;right:10px;top:10px;text-align:right"></div>

<table width="100%" align=center border=0 cellspacing=0 cellpadding=0>

<tr background='img/list.gif'>

<td class="header_td" colspan="2">

<img alt="Project Homepage" src="img/logo2.gif" class="img">

</td>

</tr>

<tr>

<td class="menu_td_left">

<?

echo msg('header_menu_user')."<b>".$cur_user."</b> (<b>".$cur_group."</b>)";

echo "<br>".msg('header_menu_project')."<b>".$cur_project['projects']."</b>";

?>

</td>

<td class="menu_td" height="48">

<?

print "<a href='main.php' class='A_menu_selected'>".msg('header_menu_main')."</a> : : ";

//if ($cur_user_group['cr_del_tasks']==1)

print "<a href='show_tasks.php' class='A_menu_selected'>".msg('header_menu_tasks')."</a> : : ";

//print "<a href='graph_project.php' target='_blank' class='A_menu_selected'>".msg('header_menu_graph')."</a> : : ";

//print "<a href='tree.php' class='A_menu'>".msg('header_menu_tree')."</a> : :";

if ($cur_user_group['cr_del_users']==1)

print "<a href='show_users.php' class='A_menu_selected'>".msg('header_menu_admin')."</a> : : ";

else 

print "<a href='privat_user.php?curuser=".$cur_user."' class='A_menu_selected'>".msg('header_menu_privat')."</a> : : ";

print "<a href='index.php?logout=t
rue' target='_top' class='A_menu_selected'>".msg('header_menu_logout')."</a>";

?>

</td>

</tr>

</table>
[/code]
 
http://твойхост/main.php?cur_user=1&cur_group=3
например (желательно поставить нормальные цифры)...

Можно еще побаловаться с $cur_user_group["cr_del_users"]
http://твойхост/main.php?cur_user=1&cur_group=3&cur_user_group[cr_del_users]=1

только куки очисти на всякий пожарный =)
 
Мне кажется, что человек имеет н-го знакомого, который поставил скрипт слитый с нета. Человек знает, что за скрипт, скачал и выложил сюда, чтоб ему помогли сломать знакомому.
Собственно обычно спрашивают, что поправить, а не как сломать.
Не благородное это дело.
 
Мне кажется, что человек имеет н-го знакомого, который поставил скрипт слитый с нета. Человек знает, что за скрипт, скачал и выложил сюда, чтоб ему помогли сломать знакомому.
Собственно обычно спрашивают, что поправить, а не как сломать.
Не благородное это дело.

В дело в том что сайт написал друг! А я начинающий програмист и он мне дал исходники что бы я с помощю их учился! Вот я решил проверить как это то что он написал работает! И мне в голову пришла мысль можна ли эту писанину как то обойти! Вот и все! Хотел убедится в правельности пасаного и сразу увидить ошибки которые не нужно допускать!
 
Мы в соцсетях:

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