Скрипт доступа к URL WebGoat? - PullRequest
       3

Скрипт доступа к URL WebGoat?

2 голосов
/ 13 февраля 2010

Я решил пару тестов WebGoat для универмага. В одном из упражнений я пытался использовать скрипт python с urllib2 для выполнения автоматических «тестов», поэтому мне не пришлось вручную использовать ascii (substr (first_name, 3,1))> 97 и т. Д.

Но мне кажется, что я получаю ту же страницу, хотя я пытаюсь использовать разные URL-адреса при использовании сценария urllib2, иначе говоря, f2, f3 и f4.html - это все основная первая страница, а не та же страница, как если бы вы открывали ее в браузере: 1003 *

import urllib2 
import urllib
import cookielib
import sys


myjar = cookielib.FileCookieJar("cookies.txt");

cookieHandler = urllib2.HTTPCookieProcessor(myjar)

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
tlurl="http://localhost:8081/webgoat/attack"

password_mgr.add_password(None,tlurl,user="guest",passwd="guest")
authhandler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(cookieHandler, authhandler)
data = [('Connection','keep-alive'),('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7')]



def write_f_to_f(fname,f):
    f1 = open(fname,"w")
    f1.write(f.read())
    f1.close()

def gen_req(url,referer=None):
    req = urllib2.Request(url)
    print "url: %s"%url
    mydata = data
    if referer != None:
       mydata.append( ('Referer',referer) ) 
    [ req.add_header(k,v) for k,v in mydata ]
    return req


sys.stdout.flush()
url = "http://localhost:8081/webgoat/attack"
req = gen_req(url)
f = opener.open(req)
write_f_to_f("f1.html",f)
f.close()

params = urllib.urlencode({'start':'Start WebGoat'})
qs = urllib.urlencode( {'Screen':107, 'menu':1200 } )
url = "http://localhost:8081/webgoat/attack"
req = gen_req(url,url)
f = opener.open(req, params)
write_f_to_f("f2.html",f)
f.close()

ourl = url
url = "http://localhost:8081/webgoat/attack?%s"%qs 
req = gen_req(url,ourl)
f = opener.open(req)
write_f_to_f("f3.html",f)
f.close()


ourl = url
url = "http://localhost:8081/webgoat/attack?%s"%qs
req = gen_req(url,ourl)
f = opener.open(req)
write_f_to_f("f4.html",f)
f.close()

NB. Я выполнил ответ на задание «трудным путем» и передал его. Теперь мне просто интересно, какой механизм препятствует доступу скрипта urllib к контенту

Я попытался получить доступ к своему локальному коту через webgoat, и консоль webgoat говорит:

Sat Feb 13 12:31:14 CET 2010 | 127.0.0.1:127.0.0.1 | org.owasp.webgoat.session.ErrorScreen | [Screen=107,menu=1200]
errorscreen createContent Error:null message:Invalid screen requested.  Try: http://localhost/WebGoat/attack
- WebGoat: Sat Feb 13 12:31:14 CET 2010 | 127.0.0.1:127.0.0.1 | org.owasp.webgoat.session.ErrorScreen | [Screen=107,menu=1200]
Sat Feb 13 12:31:14 CET 2010 | 127.0.0.1:127.0.0.1 | org.owasp.webgoat.session.ErrorScreen | [Screen=107,menu=1200]

Насколько я могу судить, это не очень помогает.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2010

Проверяется ли пользовательский агент? Я должен был указать пользовательский агент для типичного браузера, прежде чем проходить подобные проверки. У вас есть список в вашей переменной «data», но похоже, что вы на самом деле не применяете его.

1 голос
/ 13 февраля 2010

Woohoo! Обнаружено

Идентификатор страницы, которую я пытаюсь найти, обновляется при каждом сеансе. Поэтому мне нужно посмотреть на возвращенные данные, прежде чем выбрать screenId:

import urllib2 
import urllib
import cookielib
import re

def write_f_to_f(fname,f):
    f1 = open(fname,"w")
    f1.write(f.read())
    f1.close()

def gen_req(url,referer=None):
    req = urllib2.Request(url)
    return req



myjar = cookielib.FileCookieJar("cookies.txt");
cookieHandler = urllib2.HTTPCookieProcessor(myjar)

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
tlurl="http://127.0.0.1:8081/webgoat/attack"

password_mgr.add_password(None,tlurl,user="guest",passwd="guest")
find = "Blind Numeric."

authhandler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(authhandler,cookieHandler)

url = "http://127.0.0.1:8081/webgoat/attack"
req = gen_req(url,url)
f = opener.open(req)# Setup session and login.

params = urllib.urlencode({'start':'Start WebGoat'})
url = "http://127.0.0.1:8081/webgoat/attack"
req = gen_req(url,url)
f = opener.open(req,params) # Submit the "Start" form
dat = f.read() # Get the menu html from the firstpage.
f.close()


m = re.search("attack\?Screen=(\d+).*%s"%find,dat) # Try to find screen id for what i want
if not m is None:
    scr= m.group(1)
    qs = urllib.urlencode( {'Screen':scr, 'menu':1200 } )
    ourl = url
    url = "http://127.0.0.1:8081/webgoat/attack?%s"%qs
    req = gen_req(url,ourl)
    f = opener.open(req)
    write_f_to_f("f4.html",f)
    f.close()
    print "Found the page and saved it to f4.html"
else:
    print "Didnt find screen id for %s"%find
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...