PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: обход защиты сессий
Поиск в теме | Версия для печати
intertrey
Отправлено: 21 Июня, 2011 - 09:13:56
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Добрый день! Подскажи коллеги может кто сталкивался, с такой фигней.
Есть форум на движке phpbb у него видимо какие то защитные функции включены касающиеся сида сессии... не магу запостить сообщение выдает "Invalid Session. Please resubmit the form"
ФУКНЦИИ ДЛЯ ПОСТИНГА ВЫНЕСЕНЫ В ОТДЕЛЬНУЮ БИБЛИОТЕКУ
CODE (
text ):
скопировать код в буфер обмена
function post_content ($url,$postdata,$referer = FALSE,$head = FALSE,$proxy = FALSE,$auth = FALSE,$red = FALSE) {
$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_TIMEOUT, 150);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_COOKIEJAR, (dirname(__FILE__))."/coo.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE,(dirname(__FILE__))."/coo.txt");
if($red){
curl_setopt($ch, CURLOPT_MAXREDIRS, $red);
}
if($referer){
curl_setopt($ch, CURLOPT_REFERER,$referer);
}
if($head){
curl_setopt($ch, CURLOPT_HTTPHEADER,$head);
}
if($proxy == TRUE){ curl_setopt($ch, CURLOPT_PROXY, trim($proxy));}
if($auth == TRUE){curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$auth");}
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
unset($postdata);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
НЕПОСРЕДСТВЕННО САМ ПОСТИНГ
CODE (
text ):
скопировать код в буфер обмена
function index(){
set_time_limit(0);
//собираются некоторые данные для постинга из базы
$datapost = $this->lib_parser->textPost(TRUE,'pagePornbb',$cat = FALSE,'linkTn2',FALSE,TRUE);
$title = $datapost['title'];
$message = $datapost['content'];
$nobr = $datapost['nobr'];
$this->lib_parser->zb_text($nobr);
$postdata = 'username=ЛОГИН&password=ПАСС&autologin=on&redirect=&login=Log+in';
$referer = 'http://www.pornbb.org/';
$url = 'http://www.pornbb.org/login.php'; //ссылка на форму куда логинимся
$mainpost = post_content($url,$postdata,$referer); //запрос на авторизацию
//из заголовкой вытаскиываю нужный мне сид
preg_match('|(?<=phpbb2mysql_sid=)([^\<]+)(?=;)|',$mainpost['content'] ,$sid);
$sid = $sid[0];
//echo $sid.'<br>';
sleep(30);// может быть задержка поможет, где то читал...
$url2 = 'http://www.pornbb.org/posting.php?sid='.$sid;//куда будем передавать пост запрос для размещения инфы
$ref2 = 'http://www.pornbb.org/posting.php?mode=reply&t='.$sid; //с какой страницы пришли и с каким сидом
$head2 = array('Expect:'); //без заголовка хоть какого нить не работает)
$postdata2 = array(
'addbbcode20' => '%23444444',
'addbbcode22' => '12',
'message' => $message,
'subject' => $title,
'addbbcode22' => '0',
'post_icon' => '0',
'mode' => 'reply',
'sid' => $sid,
'post' =>'Submit',
't' =>'5071455'
);
//постим
$mainpost2 = post_content($url2,$postdata2,$ref2,$head2,FALSE,FALSE,$red = 0);
//видим что не очень всё хорошо
var_dump($mainpost2);
У кого находил, что бывает помогает паузу поставить между авторизацией и постингом.
Причем примерно аналогичным постером, создавал посты уже на форумах серий phpbb
Куда копать подскажите?
Разъясните мне про не совсем понимаю как она точно работает...(Отредактировано автором: 21 Июня, 2011 - 09:16:11)
intertrey
Отправлено: 21 Июня, 2011 - 10:08:07
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
Давит пишет: intertrey пишет: Разъясните мне про
PHP:
скопировать код в буфер обмена
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
не совсем понимаю как она точно работает...
http://www.php.su/functions/?curl_setopt
Извините, но вы сами то туда заходили?
COOKIESESSION там нет про сессии
OrmaJever
Отправлено: 21 Июня, 2011 - 10:17:08
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов
Помог: 299 раз(а)
Я в том году делал флудилку для ~3.0.x, смотреть и править не охота, просто выложу весь скрипт там может разберётесь
PHP:
скопировать код в буфер обмена
<?
//############### Setings ###################//
$login = '' ; // Логин на форуме
$password = '' ; // Пароль на форуме
$number = 100 ; // Сколько постов нужно нафлудить?
$link = 'http://site.ru/forum/' ; // Ссылка на форум
$f = 3 ; $t = 19 ; // Номер радела и темы узнать можно из ссылки viewtopic.php?f=3&t=19 -> $f=6 a $t=5494
$time = 10 ; // Время между постами в секундах (на версиях 3.x стоит около 5 сек)
$message = 'flud!' ; // Тект поста
//############### Setings ###################//
function curl( $url = '' , $post = '' , $referer = '' , $proxy = '' )
{
curl_setopt ( $cl , CURLOPT_USERAGENT
, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10' ) ; curl_setopt ( $cl , CURLOPT_COOKIEJAR
, $_SERVER [ 'DOCUMENT_ROOT' ] . '/cookie.txt' ) ; curl_setopt ( $cl , CURLOPT_COOKIEFILE
, $_SERVER [ 'DOCUMENT_ROOT' ] . '/cookie.txt' ) ; return $ex ;
}
$x = curl( $link . 'ucp.php?mode=login' ) ;
curl( $link . 'ucp.php?mode=login' , 'username=' . $login . '&password=' . $password . '&redirect=index.php&sid=' . $sid [ 0 ] . '&login=Вход' ) ;
for ( $i = 0 ; $i < $number ; $i ++ )
{
$x = curl( $link . 'posting.php?mode=reply&f=' . $f . '&t=' . $t ) ;
preg_match ( '#(?<=name="topic_cur_post_id"\svalue=")\d{6}#i' , $x , $post_id ) ; curl( $link . 'posting.php?mode=reply&f=' . $f . '&sid=' . $sid [ 0 ] . '&t=' . $t , 'icon=0&subject=flud&addbbcode20=100&message=' . $message . '&topic_cur_post_id=' . $post_id [ 0 ] . '&post=Отправить&attach_sig=on&creation_time=' . $tm [ 0 ] . '&form_token=' . $token [ 0] , $link . 'posting.php?mode=reply&f=' . $f . '&t=' . $t ) ;
}
?>
-----Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
intertrey
Отправлено: 21 Июня, 2011 - 13:32:38
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2011
Помог: 0 раз(а)
OrmaJever пишет: Я в том году делал флудилку для ~3.0.x, смотреть и править не охота, просто выложу весь скрипт там может разберётесь
PHP:
скопировать код в буфер обмена
<?
//############### Setings ###################//
$login = '' ; // Логин на форуме
$password = '' ; // Пароль на форуме
$number = 100 ; // Сколько постов нужно нафлудить?
$link = 'http://site.ru/forum/' ; // Ссылка на форум
$f = 3 ; $t = 19 ; // Номер радела и темы узнать можно из ссылки viewtopic.php?f=3&t=19 -> $f=6 a $t=5494
$time = 10 ; // Время между постами в секундах (на версиях 3.x стоит около 5 сек)
$message = 'flud!' ; // Тект поста
//############### Setings ###################//
function curl( $url = '' , $post = '' , $referer = '' , $proxy = '' )
{
curl_setopt ( $cl , CURLOPT_USERAGENT
, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10' ) ; curl_setopt ( $cl , CURLOPT_COOKIEJAR
, $_SERVER [ 'DOCUMENT_ROOT' ] . '/cookie.txt' ) ; curl_setopt ( $cl , CURLOPT_COOKIEFILE
, $_SERVER [ 'DOCUMENT_ROOT' ] . '/cookie.txt' ) ; return $ex ;
}
$x = curl( $link . 'ucp.php?mode=login' ) ;
curl( $link . 'ucp.php?mode=login' , 'username=' . $login . '&password=' . $password . '&redirect=index.php&sid=' . $sid [ 0 ] . '&login=Вход' ) ;
for ( $i = 0 ; $i < $number ; $i ++ )
{
$x = curl( $link . 'posting.php?mode=reply&f=' . $f . '&t=' . $t ) ;
preg_match ( '#(?<=name="topic_cur_post_id"\svalue=")\d{6}#i' , $x , $post_id ) ; curl( $link . 'posting.php?mode=reply&f=' . $f . '&sid=' . $sid [ 0 ] . '&t=' . $t , 'icon=0&subject=flud&addbbcode20=100&message=' . $message . '&topic_cur_post_id=' . $post_id [ 0 ] . '&post=Отправить&attach_sig=on&creation_time=' . $tm [ 0 ] . '&form_token=' . $token [ 0] , $link . 'posting.php?mode=reply&f=' . $f . '&t=' . $t ) ;
}
?>
Я попробовал как у тебя сделано, тоесть ты
1. сначала в "холостую подцепляешся к странице которая производит авторизацию" ucp.php?mode=login
2. Выдираешь сид регуляркой
причем если посмотреть заголовки
CODE (
htmlphp ):
скопировать код в буфер обмена
array ( 24 ) { [ "url" ] => string
( 31 ) "http://www.pornbb.org/index.php" [ "content_type" ] => string
( 9 ) "text/html" [ "http_code" ] => int
( 200 ) [ "header_size" ] => int
( 812 ) [ "request_size" ] => int
( 1200 ) [ "filetime" ] => int
( - 1 ) [ "ssl_verify_result" ] => int
( 0 ) [ "redirect_count" ] => int
( 1 ) [ "total_time" ] => float
( 0.563 ) [ "namelookup_time" ] => float
( 0 ) [ "connect_time" ] => float
( 0 ) [ "pretransfer_time" ] => float
( 0 ) [ "size_upload" ] => float
( 0 ) [ "size_download" ] => float
( 8325 ) [ "speed_download" ] => float
( 14786 ) [ "speed_upload" ] => float
( 0 ) [ "download_content_length" ] => float
( 0 ) [ "upload_content_length" ] => float
( 0 ) [ "starttransfer_time" ] => float
( 0.344 ) [ "redirect_time" ] => float
( 0.219 ) [ "certinfo" ] => array ( 0 ) { } [ "errno" ] => int
( 0 ) [ "errmsg" ] => string
( 0 ) "" [ "content" ] => string
( 58419 ) "HTTP/1.1 302 Found Set-Cookie: phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A32%3A%22e 46630b69a3f249fe065ae14db46412d%22%3Bs%3A6%3A%22u serid%22%3Bi%3A32126%3B%7D; expires=Wed, 20-Jun-2012 10:10:50 GMT; path=/ Set-Cookie: phpbb2mysql_sid=dfa1257b2e7ed9990321495a96920a37; path=/ Location: http://www.pornbb.org/index.php Content-Type: text/html Content-Length: 0 Date: Tue, 21 Jun 2011 10:10:50 GMT Server: Apache 2.2 Via: 1.1 1-5e48ad2cdbda4 Proxy-Connection: Close HTTP/1.1 200 OK Cache-Control: private, pre-check=0, post-check=0, max-age=0 Expires: 0 Pragma: no-cache Content-Encoding: gzip Vary: Accept-Encoding Content-Type: text/html Transfer-Encoding: chunked Date: Tue, 21 Jun 2011 10:10:50 GMT Server: Apache 2.2 Via: 1.1 1-5e48ad2cdbda4 Proxy-Connection: Close
То из твоей регулярки у меня выдирается 22e46630b69a3f249fe065ae14db4641 выражение, хотя наверное же сид должен быть ? Set-Cookie: phpbb2mysql_sid=dfa1257b2e7ed999 0321495a96920a37 вот же тут...
3.Далее идёт авторизация, где в редиректе указывается, что мы типа пришли с главной страницы с нужным нам сидом
4.Теперь задача вытащить данные из reply тоесть у тебя токен и тоже сид,( который нам нужен непосредствено для отправки поста??)
вытаскиваешь так
Я у себя так
5. Далее формируем пост запрос и кидаем на съедение курлу...
млин Я пробовал сид и так выдергивать и эдак всё равно пишёт Invalid Session. Please resubmit the form.
Подскажи логику работы а)
flisk
Отправлено: 21 Июля, 2011 - 13:33:58
Новичок
Покинул форум
Сообщений всего: 32
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
Я пробовал писать флудер для phpbb2. 1 сообщение отправляет нормально, а дальше вылетает с этой ошибкой сессии, будь она неладна. Если кому интересно - вот код:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
$cook = 'z:\usr\local\apache\bin\cookie.txt' ;
@ unlink ( $cook ) ; /* удаляем файл кук, ибо иначе со "старой" кукой при след. запуске скрипт снова даст ошибку сессии */ function autorize( $url , $postdata = "" ) {
if ( $postdata ) {
}
return $data ;
}
$url = 'http://forum.ru/login.php' ;
$postdata = array ( 'username' => 'user' , 'password' => 'parol' , 'redirect' => 'viewtopic.php?p=32' , 'login' => 'true' ) ;
$response = autorize( $url , $postdata ) ;
$url = 'http://forum.ru/posting.php' ;
$postdata = array ( 'message' => 'flood flood flood' , 'attach_sig' => 'on' , 'mode' => 'reply' , 'sid' => $sid , 't' => '4' , 'post' => '%CE%F2%EF%F0%E0%E2%E8%F2%FC' ) ;
for ( $a = 3 ; $a > 0 ; $a -- ) {
autorize ( $url , $postdata ) ;
}
echo "Gotovo!" ;
?>
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB