实验吧-编程-百米

2018-03-20  本文已影响0人  Cookie_hunter

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])

上一篇下一篇

猜你喜欢

热点阅读