Bugku-web-秋名山老司机

秋名山老司机

在这里插入图片描述

进来之后会发现让算一个非常复杂的算式,刷新几遍后会发现
在这里插入图片描述

让以post方式传一个值,查看源码以后也没有什么收获,所以百度了一下是叫快速反弹post请求

快速反弹post请求:在 HTTP 响应头获取了一段有效期很短的 key 值后,需要将经过处理后的 key 值快速 POST 给服务器,若 key 值还在有效期内,则服务器返回最终的 flag。

解决这类方法一般会写python脚本,先学一下requests:

GET和POST区别:请求参数的话,get和post是不同的,get是params,直接接在url后面,而post是传递data。

#发送post请求和get请求
r = requests.get("http://httpbin.org/get") 
r = requests.post("http://httpbin.org/post")

#查看请求头
r = requests.get('http://httpbin.org/get')
print(r.request.headers)

{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.24.0'}

#查看响应头
r = requests.get('http://httpbin.org/get')
print(r.headers)

{'Content-Length': '305', 'Server': 'gunicorn/19.9.0', 'Connection': 'keep-alive', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Mon, 22 Jun 2020 10:41:23 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}

#查看响应内容
r = requests.get('http://httpbin.org/get')
print(r.text)

#传递GET请求参数
#GET 请求参数作为查询字符串附加在 URL 末尾,可以通过 requests.get() 方法中的 params 参数完成。
data = {"hello":"world"}
r = requests.get('http://httpbin.org/get',params=data)
print(r.url)

http://httpbin.org/get?hello=world
  
#传递POST请求参数
#POST 请求参数以表单数据的形式传递,可以通过 requests.post() 方法中的 data 参数完成,具体代码如下:
data = {"hello":"world"}
r = requests.post('http://httpbin.org/post',data=data)
print(r.text)

cookie和session

Session 是存储在服务器上的相关用户信息,用于在有效期内保持客户端与服务器之间的状态。Session 与 Cookie 配合使用,当 Session 或 Cookie 失效时,客户端与服务器之间的状态也随之失效。

session的根本原理及安全性
Session原理

#传递Cookie参数(post和get都可以)
data = {"userid":"123456"}
r = requests.post('http://httpbin.org/post',cookies = data)
print(r.request.headers)

#建立session对象
s = requests.session()
r = s.get("http://httpbin.org/get")

正则表达式:

search() 的第一个参数是匹配的正则表达式,第二个参数是要匹配的字符串。其中 \d+代表一个或多个数字;[+\-*] 匹配一个加号,或一个减号,或一个乘号,注意减号在中括号内是特殊字符,要用反斜杠转义;(\d+[+\-*])+代表一个或多个由数字与运算符组成的匹配组;最后再加上剩下的一个数字 (\d+)。

正则表达式中,group()用来提出分组截获的字符串**,()用来分组**

写脚本如下为:

import requests
import re

url = 'http://123.206.87.240:8002/qiumingshan/'
s = requests.Session()
source = s.get(url)
expression = re.search(r'(\d+[+\-*])+(\d+)', source.text).group()

result = eval(expression)
data = {'value': result}
r = s.post(url, data=data)
print(r.text)

得到flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值