17-WEB-BugkuCTF之秋名山的车速

一,题目--秋名山的车速

image.png

二,分析

根据题目的要求,将页面的四则混合算数运算结果在2s内提交,人工计算必然是不可能的,所以我们提取页面四则混合算数运算,计算并提交

#coding:utf-8
import requests
import re
import distutils.filelist
from bs4 import BeautifulSoup
#1,获取网页内容,并且提取
内容 url = 'http://120.24.86.145:8002/qiumingshan/' #特别注意 session = requests.session() res = session.get(url) res.encoding = 'utf-8' soup = BeautifulSoup(res.text,"html.parser") div_contents = soup.find_all("div") div_content = div_contents[0].text #
143350709250709223654721*1433507092+2095192870+317935632*1098910792+926004113-1084542666*1034451422-725691534*1973466417-1918506529=?;
#2,去除无效字符 div_content = div_content.replace('
'," ") div_content = div_content.replace("
"," ") div_content = div_content.replace("=?;"," ") #3,计算结果 result=eval(div_content) #4,上传结果 post_req = session.post(url, data = {'value':result}) print(post_req.text)

特别需要注意的是:获取页面数据和提交结果需要保持一个同一个Session,Session能够跨请求保持某些参数,它也会在同一个 Session 实例发出的所有请求之间保持 cookie。 别问我为什么需要同一个Session请求和提交数据,因为这个页面的HTTP请求中有Session

三,知识点

  • Request获取页面,以及提交结果
  • 页面元素的抓取
  • Session

PS:上面页面元素的抓取和结果提交显得有点啰嗦,下面模仿网上精简的代码

import requests
import re
url = 'http://120.24.86.145:8002/qiumingshan/'
session = requests.Session();
page_content = session.get(url).text
exp = re.search(r'(\d+[+\-*])+(\d+)',page_content).group()
result = eval(exp)
print(result)
post_page = session.post(url,data={'value':result})
print(post_page.text)

你可能感兴趣的:(17-WEB-BugkuCTF之秋名山的车速)