Bugku-手速问题

这两道题用到的知识点都是python爬虫和session的使用,就放一块写wp吧

秋名山老司机

每次刷新表达式都不一样,那就用写脚本的方式来做

利用python的requests库进行页面爬取表达式,再用python的eval函数来计算表达式的值,最后进行post提交

开始写的错误脚本:

import requests

url = 'http://123.206.87.240:8002/qiumingshan/'
req = requests.get(url).text
start = req.find('div')
end = req.find('=?')

do = req[start+4:end]
num = eval(do)
data = {'value': num}
r = requests.post(url, data=data)
print(r.text)

这样运行后不会反回flag,why?我又从网上搜了这道题的脚本,发现别人用了’session()’这个东西

按照我上面写的,计算好当前页面的表达式的值后,进行post提交时再次访问了页面,表达式又变化了,因此提交的值就不是当前页面的值了

从网上了解到会话对象session:

session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies。

改正后脚本:

import requests

url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.session()
req = s.get(url).text
start = req.find('div')
end = req.find('=?')
caculate = req[start+4:end]
value = eval(caculate)
data = {'value':value}
req1 = s.post(url,data=data)
print(req1.text)

速度要快

题目

在源代码发现

不知道要post提交什么,看下响应头,发现了flag,而且每刷新一次flag就改变一次,与秋名山老司机很像

进行base64解码

发现解码后的后面几位字母还能进行解码

估计就是要post提交这几位数字

写脚本

import requests
import base64

url = 'http://123.206.87.240:8002/web6/'
s = requests.session()
req = s.get(url).headers
flag = req['flag']
flag = base64.b64decode(flag).decode('utf-8') #第一次解码
start = flag.find('吧')
flag = flag[start+3:]
flag = base64.b64decode(flag).decode('utf-8') #第二次解码
data = {'margin':flag}
res = s.post(url,data=data)
print(res.text)