bugku-秋名山老司机

这道题,存粹是为了练习python

首先打开题目链接我们可以发现,页面提示在两秒内要返回那一串数字的计算结果,显然,人类是很难做到的

这道题我看了下好多人都是正则表达式直接匹配出来的,不过我对正则不太熟悉,所以就用 requests 加 BeautifulSoup4 做的


不太熟悉的可以看下官方文档

BeautifulSoup4:

https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

requests:

http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

--------------

首先 f12 审查,发现那一串数字在一个 div 里面,所以我们利用 bs 大法直接解析出来

 话不多说,直接上代码把

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup

url = "http://123.206.87.240:8002/qiumingshan/"
s = requests.session()
r = s.get(url)
# 将编码设置为 utf8
r.encoding = 'utf-8'
# bs解析网页内容
soup = BeautifulSoup(r.text,'html.parser')
num = soup.div.text
# 赋值 post 参数
final = {'value':eval(num.replace('=?;',''))}
print(final)
r = s.post(url,data = final)
r.encoding = 'utf-8'
print(r.text)

噢 U BAD BAD

Bugku平台的名山车神题目主要考验脚本能力,题目中会出现大数字的计算,并且要求在短时间内完成,手动计算和提交难以实现,因此需要使用脚本来解题。题目多次刷新后,需要提交的参数为`value`,这些数字过长,普通计算器计算可能会溢出,所以需要借助脚本中的正则表达式来匹配页面中的算数表达式,再使用`eval()`函数计算表达式的值,最后通过`post`方法将结果提交到指定的URL获取答案。 以下是不同引用中给出的解题脚本示例: ```python # 引用[1]中的脚本 import requests import re s = requests.Session() url = 'http://114.67.175.224:18569/' r = s.get(url) r.encoding = 'utf-8' a = r.text n = re.findall(r'\d.*?=', a)[0] c = re.sub("[=]", '', str(n)) c = eval(c) o = s.post(url, data={'value': c}) print(o.text) ``` ```python # 引用[2]中的脚本 import requests import re url = 'http://114.67.175.224:18471' session1 = requests.session() response_get = session1.get(url) result = re.search(r'(\d+[+\-*])+(\d+)', response_get.text) expressions = result.group() myvalue = eval(expressions) key = {'value': myvalue} flag = session1.post(url, data=key) print(flag.text) ``` ```python # 引用[3]中的脚本 import requests import re url = 'http://117.72.52.127:18450/' s = requests.session() get_response = s.get(url) exp = re.search(r'<div>([^=]+)=\?;</div>', get_response.text).group(1) sum = eval(exp) post_response = s.post(url, data={'value': sum}) print(post_response.text) ``` ```python # 引用[4]中的脚本 import requests url = 'http://114.67.175.224:17191/' s = requests.Session() source = s.get(url) a = '0123456789+-*' c = '' for i in source.text[158:277]: if i in a: c += i post = {'value': eval(c)} print(s.post(url, data=post).text) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值