美文网首页
实验吧-编程-百米

实验吧-编程-百米

作者: Cookie_hunter | 来源:发表于2018-03-20 15:45 被阅读0次

    ctf-编码-百米

    http://www.shiyanbar.com/ctf/1971

    import requests
    import re
    
    '''
    实验吧 编程类第二题。 百米
    '''
    
    url="http://ctf5.shiyanbar.com/jia"
    session=requests.session()                      #保持连接
    response=session.get(url)
    
    html=str(response.content)                      #获取源代码
    
    
    #找到题目内容;    re.S    : 使 . 匹配包括换行在内的所有字符
    #compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,
    #供 match() 和 search() 这两个函数使用。
    
    keyword=re.compile(r'<div.*?my_expr.*?>(.*?)</div>',re.S)
    
    
    #findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,
    #如果没有找到匹配的,则返回空列表。
    
    item=re.findall(keyword, html)
    
    
    #Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),
    #如果指定第三个参数max,则替换不超过 max 次。
    #replace()方法语法:str.replace(old, new[, max])
    result=item[0].replace("x","*")  
    print ((result))        #打出截取出来的字符串表达式
    #eval() 函数用来执行一个字符串表达式,并返回表达式的值。
    pattern=eval(result)
    
    #相当于在提交栏出提交了一个pattern
    hh=session.post("http://ctf5.shiyanbar.com/jia/index.php?action=check_pass",data={'pass_key':pattern})
    #建立一个关键字列表
    lisa=['key','flag','KEY','Flag','Key','FLAG']
    
    
    for x in lisa:
        #在源码中搜索lisa中的每个关键字
        if  x  in  str(hh.text):
            #用res接收找到的res关键字的起始位置和末位置
            res=re.search(x,str(hh.text)).span()
            print("Maybe find flag ok")
            #打印出从res[0]-res[-1]+8的这一段文本;因为答案就是关键字之后的一定长度的文本
            #当然+8是测试出来的,因为一开始不知道长度可以加一个大点的数值,如+20
            print(str(hh.text)[res[0]:int(res[-1])+8])
    
    

    相关文章

      网友评论

          本文标题:实验吧-编程-百米

          本文链接:https://www.haomeiwen.com/subject/bkbafftx.html