Python攻防之弱⼝令、⾃定义字典⽣成及⽹站防护
这是作者的系列⽹络安全⾃学教程,主要是关于⽹安⼯具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,⼀起进步。前⽂分享了Python⽹络攻防基础知识、Python多线程、C段扫描和数据库编程,本⽂将分享Python攻防之⾃定义字典⽣成,调⽤Python的exrex库实现。本⽂参考了爱春秋ADO⽼师的课程内容,这⾥也推荐⼤家观看他Bilibili和ichunqiu的课程,同时也结合了作者之前的编程经验进⾏讲解。
很多⼈学习python,不知道从何学起。
很多⼈学习python,掌握了基本语法过后,不知道在哪⾥寻案例上⼿。
很多已经做案例的⼈,却不知道如何去学习更加⾼深的知识。
那么针对这三类⼈,我给⼤家提供⼀个好的学习平台,免费领取视频教程,电⼦书籍,以及课程的源代码!
QQ:961562169
作者作为⽹络安全的⼩⽩,分享⼀些⾃学基础教程给⼤家,希望你们喜欢。同时,更希望你能与我⼀起
操作深⼊进步,后续也将深⼊学习⽹络安全和系统安全知识并分享相关实验。总之,希望该系列⽂章对博友有所帮助,写⽂不容易,⼤神请飘过,不喜勿喷,谢谢!
⽂章⽬录
⼀.基础概念
1.暴⼒破解法python入门教程非常详细word
2.Web账号和⼝令
3.数据库
4.Google
5.弱⼝令(weak password)
⼆.Python调⽤exrex库⽣成密码
java基本数据类型范围
三.⾼精度字典⽣成
四.Selenium实现⽹站暴⼒登录
1.⽣成密码
2.⾃动登录
五.BurpSuite⽹站渗透
六.总结
⼀.基础概念
1.暴⼒破解法
暴⼒破解法⼜称为穷举法,是⼀种针对密码的破译⽅法。暴⼒破解被认为是打开系统或⽹站最直接、最简单的攻击之⼀,⽽且由于弱密码⼀直存在,攻击者乐此不彼。破解任何⼀个密码也都只是时间问题,密码越复杂时间越漫长。
在这⾥插⼊图⽚描述
2.Web账号和⼝令
字典是按照特定组合⽅式⽣成包含很多密码的字典⽂件,包括字符型、数字型、组合型等,Web账号
常见⼝令如admin、test、guest、administrator、666666、123456等。通常管理员会选择容易记住的⼝令好,这会造成账号和⼝令被暴⼒破解;⽽且密码会存在⼀些规则,⽐如长度 、字符要求等,这也会造成⼀些组合的泄露。
在这⾥插⼊图⽚描述
sql手机下载
3.数据库
指通过⼀些技术⼿段或者程序漏洞得到数据库的地址,并将数据⾮法下载到本地。安全⼈员⾮常乐意于这种⼯作,为什么呢?因为安全⼈员在得到⽹站数据库后,就能得到⽹站管理账号,对⽹站进⾏破坏与管理,他们也能通过数据库得到⽹站⽤户的隐私信息,甚⾄得到服务器的最⾼权限。
⽹站后台管理⼊⼝常⽤的关键字包括:admin.asp、manage.asp、login.asp、conn.asp等,可以通过⽹站图⽚属性、⽹站链接、⽹站管理系统(CMS)、⽂件进⾏查,包括⾕歌浏览器的搜索语法:“inurl: asp?id=”、“intitle:后台管理”;也可以通过wwwscan、御剑、阿D注⼊⼯具等查。
4.Google
Google提供了强⼤的搜索功能,可以获取精准的结果。如果访问不了,也可以通过百度获取相关内容,但是结果远没有⾕歌精准。常见⽅法如下:
intitle:eastmount
搜索⽹页标题包含eastmount字符的⽹页。
inurl:cbi
搜索包含特定字符cbi的URL。
intext:cbi
搜索⽹页正⽂内容包含特定字符cbi的⽹页。
filetype:ppt
搜索制定类型的⽂件,返回所有以ppt结尾的⽂件URL。
site
到与指定⽹站有联系的URL。常⽤⽰例:inurl:login.asp、inurl:asp?id=、inurl:login.asp intilte:贵州,如下图所⽰查询后台登录页⾯。
在这⾥插⼊图⽚描述
5.弱⼝令(weak password)
通常认为容易被别⼈猜测到或被破解⼯具破解的⼝令均为弱⼝令。弱⼝令指的是仅包含简单数字和字母的⼝令,例如“123”、
“abc”等,因为这样的⼝令很容易被别⼈破解,从⽽使⽤户的计算机⾯临风险,因此不推荐⽤户使⽤。
常见弱⼝令有:
数字或字母连排或混排,键盘字母连排(如:123456,abcdef,123abc,qwerty,1qaz2wsx等);
⽣⽇,姓名+⽣⽇(利⽤社⼯⾮常容易被破解);
短语密码(如:5201314,woaini1314等)。
下图引⽤⾄freebuf⽹站,它是2015年公布过最弱密码排⾏榜(此⽹站要求密码6-18位),同时也推荐读者学习下⾯两篇⽂章。
在这⾥插⼊图⽚描述
弱⼝令很容易被他⼈猜到或破解 ,所以如果你使⽤弱⼝令,就像把家门钥匙放在家门⼝的垫⼦下⾯,
这种⾏为是⾮常危险的。深信服实验室给出了如下的安全建议:
针对管理⼈员,应强制其账号密码强度必须达到⼀定的级别;
建议密码长度不少于8位,且密码中⾄少包含数字、字母和符号;
不同⽹站应使⽤不同的密码,以免遭受“撞库攻击”;
避免使⽤⽣⽇,姓名等信息做密码,远离社⼯危害。
⼆.Python调⽤exrex库⽣成密码
下⾯简单介绍Python调⽤exrex库⽣成密码。exrex是⼀个命令⾏⼯具和python模块,它⽣成与给定正则表达式等匹配的所有或随机字符串。具有以下特征:
⽣成所有匹配的字符串
⽣成随机匹配字符串
计算匹配字符串的数量
简化正则表达式
在这⾥插⼊图⽚描述
下⾯是exrex库的⼀个⼊门代码。
#填⼊正则表达式的代码会⽣成对应的内容
('(ex)r\\1')
#转换列表匹配2个hai或word
num = ate('((hai){2}|word!)'))
print num
#数字如3575-7048-5984-2471
('\d{4}-\d{4}-\d{4}-[0-9]{4}')
#时间
('(1[0-2]|0[1-9])(:[0-5]\d){2} (A|P)M')
#计数
unt('[01]{0,9}')
图书管理系统的系统流程图
#假设知道某个密码的组合⽅式,需要将所有的密码都列举出来
num = ate('[Pp][a@]ssw[Oo]rd'))
print num
它的输出结果如下图所⽰,最重要的是通过 ate(’[Pp][a@]ssw[Oo]rd’) 组合密码。在这⾥插⼊图⽚描述
exrex库是对re.DEBUG模式下进⾏的归类和分析,从⽽匹配内容,其原理相当于下⾯这个代码。
# -*- coding: utf-8 -*-
import re
data = 'abcdef'
t = re.findall('a', data, re.DEBUG)
print t, '\n'
t = re.findall('a(.*)c', data, re.DEBUG)
print t
输出结果如下图所⽰,literal 97 对应的ascii码的“a”字母,接着匹配字母“b”。
在这⾥插⼊图⽚描述
三.⾼精度字典⽣成
# ------------------- URL切割并处理成按斜杠划分的格式 -------------------------
def host_pare(host):
# 获取核⼼字符串
if '://' in host:
host = host.split('://')[1].replace('/', '')
if '/' in host: #demo.webdic
host = place('/', '')
return host
# ⽩名单包含的字典不能作为字典的内容
web_white = ['com', 'cn', 'gov', 'edu', 'org', 'www']
# ------------------- 将获取的hosts放⼊字典⽣成函数中 -------------------------js乱码怎么处理
def dic_create(hosts):
dics = []
# 切割
web_dics = hosts.split('.')
# 取出有⽤的东西,如demo、eastmount放⼊字典⽣成器
for web_dic in web_dics:
if web_dic not in web_white:  # 定义⽩名单过滤com
#print web_dic
dics.append(web_dic)
return dics
available中文翻译# ---------------------------------- ⽣成字典密码 -------------------------------
def make_pass(dics):
for dic in dics:
#获取字典中的内容
f_pass = open('', 'r')
for pwd in f_pass:
#print pwd
pwd = pwd.strip('\n') #过滤换⾏
#dic+@+pwd
final_pwds = ate(dic + '[@]' + pwd))
for final_pwd in final_pwds:
print final_pwd
# ---------------------------------- 主函数 ------------------------------------
if __name__ == '__main__':
url = 'demo.eastmount/'
dics = dic_create(host_pare(url))
make_pass(dics)
本地定义了⼀个 ⽂件夹,⽤于存放常见的密码。
在这⾥插⼊图⽚描述
通过上⾯代码组合⽣成如下的密码,可以看到它由demo、eastmount和我们⾃定义的词典组成。在这⾥插⼊图⽚描述
但是,未来修改密码⽐较繁琐,我们希望将核⼼的⽣产规则写⼊配置⽂件,为后期使⽤提供⽅便,所以接下来我们创建⼀个 rule.ini ⽂件,其内容如下所⽰。其中,# 表⽰注释,提⽰这算是⼀个字典⽂件,⽽最重要的⼀⾏代码是我们的⽣成字典规则。
在这⾥插⼊图⽚描述
接着我们继续补充上⾯代码,读取⽂件分析该规则(|{dic})(|#|@)(|{pwd})(|#|@)(|201[6789]),它是由dic、特殊字符、pwd和年份组成的。
# -*- coding: utf-8 -*-
import exrex
# ------------------- URL切割并处理成按斜杠划分的格式 -------------------------
def host_pare(host):
# 获取核⼼字符串
if '://' in host:
host = host.split('://')[1].replace('/', '')
if '/' in host: #demo.webdic
host = place('/', '')
return host
# ⽩名单包含的字典不能作为字典的内容
web_white = ['com', 'cn', 'gov', 'edu', 'org', 'www']
# ------------------- 将获取的hosts放⼊字典⽣成函数中 -------------------------
def dic_create(hosts):
dics = []
# 切割
web_dics = hosts.split('.')
# 取出有⽤的东西,如demo、eastmount放⼊字典⽣成器
for web_dic in web_dics:
if web_dic not in web_white:  # 定义⽩名单过滤com
#print web_dic
dics.append(web_dic)
return dics
# --------------------------------------- ⽣成字典密码 --------------------------------------
def make_pass(dics):
for dic in dics:
#打开配置⽂件
f_rule = open('rule.ini', 'r')
for i in f_rule:
if '#' != i[0]: #判断第⼀个字符⾮#表⽰配置内容
rule = i
print u'The rule is ', i
#保存⽣成的字典
fout = open('', 'w')
fout.close()
#获取字典中的内容
f_pass = open('', 'r')
for pwd in f_pass:
#部分密码较弱根据⽹站设置长度
final_pwds = ate(rule.format(dic=dic, pwd=pwd.strip('\n'))))
#遍历密码
for final_pwd in final_pwds:
if len(final_pwd) > 6:
print final_pwd
#保存⽣成的字典

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。