File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+ """
4+ Copyright (c) 2006-2014 sqlmap developers (http://sqlmap.org/)
5+ See the file 'doc/COPYING' for copying permission
6+ """
7+
8+ import re
9+
10+ from lib .core .common import readInput
11+ from lib .core .data import kb
12+ from lib .core .data import logger
13+ from lib .request .connect import Connect as Request
14+ from thirdparty .oset .pyoset import oset
15+
16+ abortedFlag = None
17+
18+ def parseSitemap (url , retVal = None ):
19+ global abortedFlag
20+
21+ if retVal is not None :
22+ logger .debug ("parsing sitemap '%s'" % url )
23+
24+ try :
25+ if retVal is None :
26+ abortedFlag = False
27+ retVal = oset ()
28+
29+ content = Request .getPage (url = url , raise404 = True )[0 ] if not abortedFlag else ""
30+ for match in re .finditer (r"<loc>\s*([^<]+)" , content ):
31+ if abortedFlag :
32+ break
33+ url = match .group (1 ).strip ()
34+ if url .endswith (".xml" ) and "sitemap" in url .lower ():
35+ if kb .followSitemapRecursion is None :
36+ message = "sitemap recursion detected. Do you want to follow? [y/N] "
37+ test = readInput (message , default = "N" )
38+ kb .followSitemapRecursion = test [0 ] in ("y" , "Y" )
39+ if kb .followSitemapRecursion :
40+ parseSitemap (url , retVal )
41+ else :
42+ retVal .add (url )
43+
44+ except KeyboardInterrupt :
45+ abortedFlag = True
46+ warnMsg = "user aborted during sitemap parsing. sqlmap "
47+ warnMsg += "will use partial list"
48+ logger .warn (warnMsg )
49+
50+ return retVal
You can’t perform that action at this time.
0 commit comments