ctf那些坑–02
1、天下武功唯快不破
- 目标网站:http://xxxx.com
- 提示信息:天下武功唯快不破
- 访问网页信息得到一段源码
这段代码的意思就是我们访问网页会生成一个txt文件,这个文件里就有我们要的flag信息;这个文件的命名方式是由1到999随机生成的数字经过MD5加密之后拼接的;而且只存在10秒,所以我们需要一个python脚本来帮我们请求访问,并获得响应包中的flag信息
#coding:utf-8
import time,hashlib,thread,requests
def ww(url):
a=requests.get(url)
#print url
if a.status_code==200:
a.encoding="utf-8"
print a.text
return
for i in range(1,1001):
a=hashlib.md5(str(i)).hexdigest()
url="http://106.75.26.211:3333/u/"+a+".txt";
thread.start_new_thread(ww,(url,))
time.sleep(0.1)
因为文件只存在10秒所以需要多试几次;最后结果
2、fuzzing
- 目标网站:http://xxxx.com
- 提示信息:fuzzing
访问网站,页面显示
there is nothing
抓包查看信息
可以发现响应包中提示这是个大内网(10.0.0.0);所以我们开始构造x-forwarded-for
可以看到有一个php文件,去访问下
需要我们展示key,所以我们需要传入一个key值
最后我们得到一个真正的key,但是key是MD5加密的值,还知道明文是ichunqiu+[a-z0-9]{5};所以我们又需要写个脚本去计算出明文key
import hashlib
def md5(data):
m = hashlib.md5()
m.update(data)
a = m.hexdigest()
return a
a = 'ichunqiu'
b = 'abcdefghijklmnopqrstuvwxyz1234567890'
for i in b:
for j in b:
for k in b:
for l in b:
for m in b:
if md5(a+i+j+k+l+m)=='5a2a7d385fdaad3fabbe7b11c28bd48e':
print a+i+j+k+l+m
结果
然后将真正的key传进去
看到一个PHP文件,访问下
得到一个flag信息和一个txt文件;访问下txt文件
得到了一个php源码,可以看到定义的第一个函数,让我们传入string,与key,用它来给string解码;string是刚刚看到的flag信息,key我们也知道;然后输出函数的结果就能得到解码后的flag信息