欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实验吧-web-天下武功唯快不破(Python中byte和str的转换)

程序员文章站 2022-05-15 09:53:59
...

题目:看看响应头

打开网站,既然已经提示我们看响应头了,那我们就看看呗(习惯bp,也可直接F12查看)

实验吧-web-天下武功唯快不破(Python中byte和str的转换)

 可以看到,响应头部分有个FLAG,而且有提示:please post what you find with parameter:key

所以就将FLAG解码后post,解码之后是:P0ST_THIS_T0_CH4NGE_FL4G:omiFOwSfc

所以post:key=omiFOwSfc

实验吧-web-天下武功唯快不破(Python中byte和str的转换)

 这样再转码,再POST,发现是个死循环,FLAG是随机随机生成的,不管post多少次都拿不到我们要提交的flag。

于是上脚本

#coding:utf-8
import requests
import base64

url = 'http://ctf5.shiyanbar.com/web/10/10.php'
s = requests.Session()
r = s.get(url) #打开网页
head = r.headers #获取http头

f = base64.b64decode(head['flag'])
flag = str(f,encoding='utf-8').split(':')[1]
print(flag)

key = {'key':flag}
result = s.post(url,data=key).text
print(result)

也提一下flag = str(f,encoding='utf-8').split(':')[1],这里base64.b64decode()后得到的是byte类型的数据,所以在split时要转成str类型的,下面是两者的转换

 # str to bytes
  bytes(s, encoding = "utf8")

  # bytes to str
  str(b, encoding = "utf-8")
 
相关标签: 实验吧web