首页 > 解决方案 > dvwa 暴力破解的 Python 循环

问题描述

试图让用户:在 python 中通过 bruteforce 进行 dvwa 练习

我想做的是:

我在列表中有 10 个密码和 10 个用户名[]

循环应该取一个用户名并尝试所有 10 个密码,然后是第二个用户名并执行相同操作

这是我正在使用的代码

u=0
p=0
try:
    while True:
        for _ in usernames:
            user = usernames[u]
            u+=1
            for _ in passwords:
                passwd = passwords[p]
                brute(user, passwd)
                print("trying password on %s : %s " % (user, passwd), end="\r")
                p+=1
except IndexError:
            pass

它在尝试第一个用户名上的所有密码后停止并结束程序。

我在这里做错了什么?, 向新​​手程序员道歉

蛮力功能

def brute(user, passwd):
    hit = session.get(target + 'vulnerabilities/brute/?username=%s&password=%s&Login=Login' % (user, passwd))
    soup = BeautifulSoup(hit.text, 'html.parser')
    if str(soup.p) == "<p>Welcome to the password protected area admin</p>":
        print('login success =>')
        return True
    return False

标签: pythonpython-3.xlistfor-loopwhile-loop

解决方案


您忘记p=0在密码循环之前进行设置。因此,它IndexError在第二个用户和第一个密码的迭代中给出了一个。

顺便说一句,您的代码可以简化为:

for username in usernames:
    for password in passwords:
        print("trying password on %s : %s " % (username, password), end="\r")
        brute(username, password)

推荐阅读