Στις 6/11/2013 9:38 πμ, ο/η Nick the Gr33k έγραψε:
Ah great!!!

I just examined my other MySQL database which just stored webpages and
their corresponding visits and voila.

Someone was able to pass values into my counters table:

look:

http://superhost.gr/?show=stats

thats why it didn't had 1 or 2 or 3 as 'counterID' but more values were
present.

Someone successfully manipulated this part of my code:

if cookieID != 'nikos' and ( os.path.exists( path + page ) or
os.path.exists( cgi_path + page ) ) and re.search(
r'(amazon|google|proxy|cloud|reverse|fetch|msn|who|spider|crawl|ping)',
host ) is None:

     try:
         # if first time for webpage; create new record( primary key is
automatic, hit is defaulted ), if page exists then update record
         cur.execute('''INSERT INTO counters (url) VALUES (%s) ON
DUPLICATE KEY UPDATE hits = hits + 1''', page )
......
......

I see no way of messing with the above statement other that tweak with
the 'page' variable but its not clear to me how.

You as more experience can you tell how the aboev code of database insertio


Here is more insight on how i initiate the 'page' variable:

==========================================
# define how the .html or .python pages are called
path = '/home/nikos/public_html/'
cgi_path = '/home/nikos/public_html/cgi-bin/'

file = form.getfirst('file', 'forbidden') # this value should come only from .htaccess and not as http://superhost.gr/~nikos/cgi-bin/metrites.py page = form.getvalue('page') # this value comes from 'index.html' or from within 'metrites.py'

if os.path.exists( file ) and not page:
        # it is an html template
        page = file.replace( path, '' )
==========================================


Any ideas please on how the hacker manages to pass arbitrary values into the 'page' var since i explicitly define it and before database insertion i check for:

if cookieID != 'nikos' and ( os.path.exists( path + page ) or os.path.exists( cgi_path + page ) )

?!?!
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to