url = "http://www.example.com?type=a&type1=b&type2=c"
urllist = get_urllist(url)
trigger = ["'or '1'='1'"," 'OR '1'='2'","'OR a=a"]
def get_urllist(url):
url_parsed = urlparse.urlparse(url)
#extract the query parameters of the URL
query = urlparse.parse_qs(url_parsed.query)
#get the list of query
query_list = query_list(query)
#Get Base url
url = urlparse._replace(query=None).geturl()
#modify url to get url_list
for query in query_list :
# change the original query to get the expected result
return url_list
def query_list(query):
for t in trigger:
for key, value in query.items():
query[key] += t
query_list.append(query)
return query_list
如何通过更改查询参数值返回URL列表?
原始url =“http://www.example.com?type=a&type1=b&type2=c“
预期结果:
Copyright © 2018 - 2019 www.http://www.example.com?type=a.com版权所有
4条答案
按热度按时间rmbxnbpk1#
在Python2.x
你可以使用
urlparse.urlparse
函数和ParseResult._replace
方法:备注
Python 3
**中的urlparse
模块重命名为urllib.parse
。2to3
工具将在将源代码转换为Python 3时自动调整导入。在Python3.x
你也可以使用
urlparse.urlparse
函数。演示输出:
wmomyfyw2#
您可以使用furl包。
给出输出:
http://www.example.com?type=a%27or+%271%27%3D%271%27
并解码:
http://www.example.com?type=a'or '1'='1'
j2datikz3#
举个简单的例子:
mrphzbgm4#
为了避免使用私有方法
_replace()
,我只是创建了一个新的SplitResult
,在必要的地方替换了旧的参数。我使用的是
urlsplit()
,它返回SplitResult
,但我想你可以对从urlparse()
返回的ParseResult
做同样的事情。两者都被命名为元组。docs中描述了所有内容对于具体的查询,还执行
parse_qs()
以获取参数的dict,并执行urlencode()
以获取查询字符串。