BugKu Web(21-25)
前言
bugku刷题,本来想每10道写一篇的,但水平有限,发现到这里题目难度已经有点大了,所以每5道题整合一篇吧…
题目
-
秋名山老司机
登陆可以看到如上提示,然后快速刷新可以看到要求是post提交,键名为value
这肯定是人工没法完成的,必须写脚本py脚本写起来的时候,没有用过eval函数,是真的痛苦,不断字符串处理,条件判断…
最后还不对,最后看了别人的博客后发现代码即为简短…主要就是eval函数
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) post = { 'value': result} print(s.post(url, data = post).text)
这道题主要考查的就是脚本的编写,很多时候其实都会遇到要编写脚本
urllib,requests,re…这些模块都很常用到需要好好熟悉
-
速度要快
题目没给什么信息,查看源码有个提示,但也不懂它在说什么
这时候抓包看下,神奇的发现了flag…
这时候base64解码看下
把得到的值拿去提交发现不对…这时候用repeater多go几次发现flag在变…
现在在根据它前面源码的提示来看,应该是要我们在短时间把得到的flag已post形式传过去
这时候写个脚本就好了
最开始用urllib死活不行,后面想了想应该是cookie的问题,然后查了下怎么使用返回的cookie…还是requests方便…
然后要base64解两遍这个也是坑不参考别人的做法就基本卡死在这里了,毕竟加解密这一块不是特别理解
import base64 import http.cookiejar from urllib import request,parse url = 'http://123.206.87.240:8002/web6/' cjar=http.cookiejar.CookieJar() cookie=request.HTTPCookieProcessor(cjar) opener=request.build_opener(cookie) request.install_opener(opener) res = request.urlopen(url) flag = res.headers.get('flag') value = (base64.b64decode((base64.b64decode(flag.encode('utf