bugku-web-速度要快

 

查看源代码,发现需要post穿参,参数margin:

 

使用BP抓包或者F12查看网络状态,响应头返回一个flag字样的base64加密的值:

 

 

 flag:

  6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogT0RnMk9UWXg=

 base64解密:

 

跑的还不错,给你flag吧: ODg2OTYx

再次base64解密:

 

 

 

 使用post,margin=886961,穿参发现不对:

所以需要重新想思路,再重新发包发现flag会变,因此我们使用脚本来请求flag的值:

思路是这样的,使用session控制回话,之后获取响应头flag值之后进行base64解码,得到后面的base64再次进行解码,之后将该值穿参给margin看反应结果:

使用python2实现,通过Session对象,您可以在请求中保留某些参数。它还会在所有从Session实例发出的请求中保留cookie。

首先说一下,为什么要进行会话保持的操作?url_session = requests.Session()

requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象求求该网站的其他网页都会默认使用该session之前使用的cookie等参数

尤其是在保持登陆状态时运用的最多,在某些网站抓取,或者app抓取时,有的时强制登陆,有的是不登陆返回的数据就是假的或者说是不完整的数据,那我们不可能去做到每一次请求都要去登陆一下怎么办,就需要用到保持会话的功能了,我们可以只登陆一次,然后保持这种状态去做其他的或者更多的请求。


# -*- coding: UTF-8 -*-
import requests
import base64
url = 'http://123.206.87.240:8002/web6/'
url_session = requests.Session()
url_req = url_session.get(url)

#获取响应头
flag_header = url_req.headers['flag']
print flag_header

#进行base64解密
enba_flag_header = base64.decodestring(flag_header)
print enba_flag_header

#获取:后面的字符串再次进行base64解密
print base64.decodestring(enba_flag_header.split(': ')[1])

#进行post穿参,打印之后内容
post = url_session.post(url,{'margin':base64.decodestring(enba_flag_header.split(': ')[1])})
print post.text



脚本运行后得到flag,KEY{111dd62fcd377076be18a}
posted @ 2020-09-27 12:12  逆向菜狗  阅读(220)  评论(0编辑  收藏  举报