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

Тема в разделе "PHP программирование", создана пользователем abdyla_v, 20 июл 2007.

  1. abdyla_v

    abdyla_v Гость

    Репутация:
    0
    Есть два поля и внопка :
    Код (Text):
    .................................................. ..
    .................................................. ..
    <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">
    .................................................. ..
    .................................................. ..
    При нажатии на кнопку входа выполняется код:

    Код (Text):
    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.
     
  2. admin

    admin Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2003
    Сообщения:
    2.755
    Симпатии:
    1
    попробуй всякие injection популярные. вот и проверишь.
     
  3. Gisma

    Gisma Гость

    Репутация:
    0
    гг... отсканируй сервер, скан выложи сюда :) будем курить
     
  4. MajestiC

    MajestiC Гость

    Репутация:
    0
    Можно, просто ввести main.php в браузере =)

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

    1. Учи функцию header();
    2. Учи $_GET, $_POST
    3. Учи register_globals
    4. Учи mysql_escape_string
    5. Вместо cookie используй сессии.
     
  5. abdyla_v

    abdyla_v Гость

    Репутация:
    0
    Нет! так не получится - :) ! Там всё схвачено!

    Так что нету больше предложений?
     
  6. MajestiC

    MajestiC Гость

    Репутация:
    0
    Что там схвачено? Я куки подделаю и всё, main.php меня воспримет.
     
  7. Pasha

    Pasha Гость

    Репутация:
    0
    Для: abdyla_v
    [подправлено]
    использование $login в первом запросе позволяет вставить в него что-то вроде:
    '; SELECT 1 as UserID, <md5> as passwd; --'
    что вообще не есть хорошо.
     
  8. MajestiC

    MajestiC Гость

    Репутация:
    0
    abdyla_v
    Ну собвственно опять повторюсь:

    1. Учи функцию header();
    2. Учи $_GET, $_POST
    3. Учи register_globals
    4. Учи mysql_escape_string
    5. Вместо cookie используй сессии
     
  9. abdyla_v

    abdyla_v Гость

    Репутация:
    0
    Что значит подделаю там есть такой код:

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

    {

    ?><script language="javaScript">

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

    </script><?

    exit;

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

    MajestiC Гость

    Репутация:
    0
    Код приведи своего main.php, первый файл который ты скинул ты скинул как назывался? Телепатов тут нет.

    PS. Твой код выглядел бы хорошо во времена PHP 3, а сейчас уже пора писать нормально и отказатся от register_globals, а использовать $_GET и $_POST, ты еще естественно рассчитываешь на magic_quotes_gpc, а надо бы использовать mysql_escape_string. Зачем использовать javascript для перехода, если для этого люди придумали HTTP заголовки, реализуемые через header в php. 21 век на дворе как-никак.
     
  11. Pasha

    Pasha Гость

    Репутация:
    0
    <!--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 при заходе на "защищенную" страницу.
     
  12. MajestiC

    MajestiC Гость

    Репутация:
    0
    Для: Pasha
    Ты не учел exit;
     
  13. Pasha

    Pasha Гость

    Репутация:
    0
    Для: MajestiC
    Зато я учел, что создать cookie с именем "cur_user" - это очень просто.
     
  14. MajestiC

    MajestiC Гость

    Репутация:
    0
    Ну вот для этого я и хотел увидеть код main.php =)
     
  15. abdyla_v

    abdyla_v Гость

    Репутация:
    0
    Код который я привел в первый раз из файла - Index.php
    Теперь привожу - main.php :
    Код (Text):
    <?
    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

    Код (Text):
    <?

    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]
     
  16. MajestiC

    MajestiC Гость

    Репутация:
    0
    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

    только куки очисти на всякий пожарный =)
     
  17. Oflashp

    Oflashp Гость

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

    MajestiC Гость

    Репутация:
    0
    Для: Oflashp
    Всё может быть.
     
  19. abdyla_v

    abdyla_v Гость

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

    Oflashp Гость

    Репутация:
    0
    Для: abdyla_v
    Очень не вериться.
     
Загрузка...

Поделиться этой страницей