17-WEB-BugkuCTF之秋名山的车速
2018-06-30 本文已影响16人
evil_ice
一,题目--秋名山的车速
image.png二,分析
根据题目的要求,将页面的四则混合算数运算结果在2s内提交,人工计算必然是不可能的,所以我们提取页面四则混合算数运算,计算并提交
#coding:utf-8
import requests
import re
import distutils.filelist
from bs4 import BeautifulSoup
#1,获取网页内容,并且提取<div>内容
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
# <div>143350709250709223654721*1433507092+2095192870+317935632*1098910792+926004113-1084542666*1034451422-725691534*1973466417-1918506529=?;</div>
#2,去除无效字符
div_content = div_content.replace('<div>'," ")
div_content = div_content.replace("</div>"," ")
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)