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

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

  1. abdyla_v

    abdyla_v Гость

    Есть два поля и внопка :
    Код (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

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

    Gisma Гость

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

    MajestiC Гость

    Можно, просто ввести 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 Гость

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

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

    MajestiC Гость

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

    Pasha Гость

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

    MajestiC Гость

    abdyla_v
    Ну собвственно опять повторюсь:

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

    abdyla_v Гость

    Что значит подделаю там есть такой код:

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

    {

    ?><script language="javaScript">

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

    </script><?

    exit;

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

    MajestiC Гость

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

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

    Pasha Гость

    <!--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 Гость

    Для: Pasha
    Ты не учел exit;
     
  13. Pasha

    Pasha Гость

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

    MajestiC Гость

    Ну вот для этого я и хотел увидеть код main.php =)
     
  15. abdyla_v

    abdyla_v Гость

    Код который я привел в первый раз из файла - 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 Гость

    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 Гость

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

    MajestiC Гость

    Для: Oflashp
    Всё может быть.
     
  19. abdyla_v

    abdyla_v Гость

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

    Oflashp Гость

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

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