速度要快(Bugku)

 

 

这道题好坑的说……

一开始点开网页源代码,说让我post传一个margin过去,毫无思路……用burpsuite抓包看看

哇塞,在repeater里看到了什么!

速度要快(Bugku)_第1张图片

惊喜!显然是个base64编码,赶快去解码一下,得到了:

咦好简单哦,半信半疑的把给的flag交了上去……Incorrect code……

(懵逼脸

虽然觉得不会这么简单……可是???????

------------------------------------------------------------------------正确思路----------------------------------------------------------------------------

跑到网上看大佬们写的wp,知道repeater里的那个让我惊喜的flag值居然在变……它在变……go了几发终于死心,真的会变嘤;

无可奈何开始写脚本……

先贴出代码:

import requests
import base64
url="http://120.24.86.145:8002/web6/"
r=requests.session()
headers=r.get(url).headers#因为flag在消息头里

mid=base64.b64decode(headers['flag'])
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方法传上去

从burpsuite中我们可以知道,我们看到的那个flag肯定是可以得到答案的,但是让人纠结的地方就是会变而已;

下一步我们也知道了这个flag进行了base64编码,只要进行解码就可以了;

根据这些开始写脚本,详见代码中的注释;

跑完就出真正的flag了

---------------------------------------------------------------------------------------------------------------------------------------我是分割线哇

注:

没有加mid=mid.decode()那一步时一直报错;

——是因为字符串有byte类型和str类型,有时操作数类型和操作类型不匹配就会报错……这时候就要把类型转换一下(无论是转换操作数还是操作都行,只要两者匹配

一个简单的方法:
  1、byte型转str型

          mid=mid.decode()

  2、str型转byte型

          mid=mid.encode()

你可能感兴趣的:(Web学习笔记)