BugkuCTF-WEB题速度要快

BugkuCTF-WEB题速度要快此题小结 用 python 脚本获取网页内容以及 post 数据 主要函数 s requests session url return s get url 可以获取 header 等信息 data 最后传值 s post data data 解题流程 打开网页 只看到一句话

大家好,我是讯享网,很高兴认识大家。

此题小结:

用python脚本获取网页内容以及post数据
主要函数:
s= requests.session()
url=’’
return= s.get(url). # 可以获取header等信息
data={}
最后传值:s.post(data=data)

解题流程

打开网页,只看到一句话:我感觉你得快点!!!
在这里插入图片描述
讯享网
F12查看源代码
发现了提示:OK ,now you have to post the margin what you find
需要以POST方式传参,先用BrupSuite抓包看一下
1、使用BrupSuite抓包并重新发送
在这里插入图片描述
在这里插入图片描述
发送后看到flag
2、使用base64解码
在这里插入图片描述
跑的还不错,给你flag吧: MTMyOTIx
3、继续进行一次base64解码
在这里插入图片描述
4、通过post方法上传margin=
在这里插入图片描述
还要再快点,看来有时间限制,不过已经有了思路,可以编写python脚本了
5、编写python脚本并执行

import requests import base64 url = "http://114.67.246.176:13069" r = requests.session() #建立session header = r.get(url).headers 获得消息头,因为flag在消息头里 mid = base64.b64decode(header['flag']) 解密消息头键名flag的键值,将flag进行base解码 mid = mid.decode() #为了下一步通过split不报错,b64decode后操作的对象为byte类型的字符串,而split数学函数要为str类型的 flag = base64.b64decode(mid.split(':')[1]) #获得flag:后的值 data = { 
   'margin':flag} print(r.post(url,data).text) #post方法传上去 #方法二: import requests import base64 url= "http://120.24.86.145:8002/web6/" s = requests.Session() headers = s.get(url).headers #获得消息头 str1 = base64.b64decode(headers['flag']) #解密消息头键名flag的键值 str2 = base64.b64decode(repr(str1).split(':')[1]) #解密str1里flag:后的值 key = { 
   'margin':str2} #创建一个字典类型用于传参 flag = s.post(url,data=key) #post方法传上去 """ 知识补充: python里的字符串有byte型和str型,有时操作数类型和操作类型不匹配就会报错 b64decode()结果是byte型字符串,而split()函数要为str型字符串 repr()函数可以将byte型字符串转换成str型字符串 另外,还有一个简单的方法: 1、byte型转str型 _str=_byte.decode() 2、str型转byte型 _byte=_str.encode() """ """ 知识点 import base64 st = 'hello world!'.encode() #默认以utf8编码 res = base64.b64encode(st) print(res.decode()) #默认以utf8解码 res = base64.b64decode(res) print(res.decode()) #默认以utf8解码 输出 aGVsbG8gd29ybGQh hello world! """ """ split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。 实例 以下实例展示了 split() 函数的使用方法: str = "this is string example....wow!!!" print (str.split( )) # 以空格为分隔符 print (str.split('i',1)) # 以 i 为分隔符 print (str.split('w')) # 以 w 为分隔符 以上实例输出结果如下: ['this', 'is', 'string', 'example....wow!!!'] ['th', 's is string example....wow!!!'] ['this is string example....', 'o', '!!!'] 以下实例以 # 号为分隔符,指定第二个参数为 1,返回两个参数列表。 txt = "Google#Runoob#Taobao#Facebook" # 第二个参数为 1,返回两个参数列表 x = txt.split("#", 1) print(x) 以上实例输出结果如下: ['Google', 'Runoob#Taobao#Facebook'] """ 

讯享网

在这里插入图片描述
6、得到flag:flag{dfba848a692f67fe50a13d42e}

小讯
上一篇 2025-04-06 08:00
下一篇 2025-03-27 12:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55305.html