1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

  1. abdyla_v

    abdyla_v Гость

    Репутация:
    0
    Есть два поля и внопка :
    Код:
    .................................................. ..
    .................................................. ..
    <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.
     
  2. admin

    admin Well-Known Member

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

    Gisma Гость

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

    MajestiC Гость

    Репутация:
    0
    Можно, просто ввести 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 используй сессии.
     
  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
    Что значит подделаю там есть такой код:

    Код:
    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 :
    Код:
    <?
    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]
     
  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
    Очень не вериться.
     
Загрузка...

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