bugku 秋名山老司机

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zyl_wjl_1413/article/details/83958862

思路

根据要求,2s内计算出结果即可得到flag,上python

题解

import requests
import re
url="http://123.206.87.240:8002/qiumingshan/"
r=requests.session()
text=r.get(url).text #将get到的数据以文本形式显示出来
cont=re.findall('<div>(.*?)</div>',text) #匹配出计算表达式,返回的是列表
cont="".join(cont) #列表转字符串,因为eval()接收的参数类型为string, bytes or code object
cont=cont[:-3] #删掉多余的字符
post=eval(cont) #eval()可以把字符串当做有效表达式进行计算
data={'value':post} #构造post数据
ans=r.post(url,data=data)
print(ans.text)

新姿势

1、request 中 text、content区别:

  • 返回类型不同,text以Unicode编码返回,而content以bytes型返回

  • 一般情况下text提取出来的可能乱码,content提取出来的一般不会乱码

  • text用于提取文本,content用于提取图片、文件

2、eval()函数,将字符串str当成有效的表达式来求值并返回计算结果
3、列表与字符串相互转换:

  • 列表–>字符串:
    list=['I','love','you'] 
    str=" ".join(list)
  • 字符串–>列表:
str="I love you"
list=str.split() #参数缺省时默认以空格分割
展开阅读全文

没有更多推荐了,返回首页