ctf3

ctf那些坑03

1、ipspoofing
  1. 网站信息:http://xxxx.com
  2. 提示信息:ipspoofing
  3. 访问网站,发现是个静态网站,解读提示信息:ipspoofing又叫ip欺骗,猜想应该还需要构造ip访问,但是不知道构造什么ip;访问那个网页,所以只有乱转,查看网页源码,可以在最下面看到一个跳转,是跳向一个php网站
    这里写图片描述
    访问该页面发现是一个登陆页面,提示如果不是管理员请离开,所以我就猜测用户名可能是administrator,然后猜测用户名密码登陆发现
    这里写图片描述
    因为它提示出现的太快,我猜可能与js有关,就用调试插件查看的下提示信息的位置发现
    这里写图片描述
    知道许可的ip,通过查看网页源码,在最下面可以看到用户名密码;
    这里写图片描述
    然后登陆得到结果
    这里写图片描述
2、phpinfo
  1. 网站信息:http://xxxx.com
  2. 提示信息:phpinfo
  3. 访问网页出现的是一个phpinfo页面,其余什么都没有,看上面的链接可以发现有点可操作性
    这里写图片描述
    根据phpinfo可以知道网站根目录,我们要找flag信息,我就猜了下flag信息在网站根目录下(这里我是猜的,被我猜中了,有个大佬用目录扫描器扫出来flag.php,我没试,有兴趣的可以试一下),用文件包含试着读一下
    这里写图片描述
    因为php://filter是以base64编码读取出文件内容的,所以去解码就得出flag信息了
    这里写图片描述
3、GetFlag
  1. 网站信息:http://xxxx.com
  2. 提示信息:GetFlag
  3. 访问网站,页面给的提示信息是我可以登陆然后下载文件
    这里写图片描述
    进入登陆页面,发现登陆有验证码,是用MD5加密的,所以需要一个脚本跑出验证码;
import hashlib
def md5(data):
    m = hashlib.md5()
    m.update(data)
    a = m.hexdigest()
    return a

b = 'abcdefghijklmnopqrstuvwxyz1234567890'
for i in b:
    for j in b:
        for k in b:
            for l in b:
                for m in b:
                    if (md5(i+j+k+l+m)[0:6])=='加密的验证码':
                        print i+j+k+l+m

跑出验证码;我觉得验证码一是个坑,用户名和密码应该不会太卡我们,在网页中没有找到有用的用户名密码,我就用万能密码试了下,结果成功了
这里写图片描述
这里写图片描述
进去过后给了三个文件下载下来发现告诉我flag在根目录,所以我们得去下载根目录的flag文件,如何知道下载的链接呢;查看网页源码可以看到那三个文件的下载链接,直接复制去下载flag文件,会得到php源码
这里写图片描述
通过源码我们可以知道post传入一个flag就能得到我们想要的信息,通过下面的eval与if判断可以知道flag=flag所以我们直接去访问flag.php并post传入flag;这里返回的信息会被解析,可以抓包得到flag
这里写图片描述

4、pyscript
  1. 网站信息:http://xxxx.com
  2. 提示信息:pyscript
  3. 访问网站,它提示让我输入答案,可是我怎么知道答案是什么,第二步当然是看看网页源码有没有提示信息啦,结果还真有
    这里写图片描述
    让我找出明文,还要10秒钟提交答案,这是考验我手速?根据提示应该是想让我们写python脚本来完成一系列操作,并获得返回的flag信息;
import urllib,urllib2,json
import hashlib

import re
import requests

url = 'http://106.75.108.111:1111'

def sha_1(data):
    sha_1 = hashlib.sha1()
    sha_1.update(data)
    sha = sha_1.hexdigest()
    return sha

def key(key1,key2):
    c='0123456789'
    str1 = key1
    cipher = key2
    for i in c:
        for j in c:
            for k in c:
                if sha_1(i+j+k+str1) == cipher:
                    # print (i+j+k)
                    return i+j+k
def get_info():
    r = requests.post("http://106.75.108.111:1111")
    key2 = r.headers['Ciphertext']
    cookies = r.cookies
    html = r.text
    res = r'\+(.*?)\)'
    key1 = re.findall(res,html)[0]
    print key1
    return key1,key2,cookies

def postx(number,cookies):
    cookies = cookies
    values={'pass':number}
    response = requests.post("http://106.75.108.111:1111",cookies=cookies,data=values)
    return response.text

def sum(text):
    res = r'<!--.*?([\d\+\-\*]+).*?-->'
    key3 = re.findall(res,text)[0]
    result = eval(key3)
    return result


if __name__ == '__main__':
    (key1,key2,cookies)=get_info()
    number = key(key1,key2)
    result1 = postx(number,cookies)
    result2 = sum(result1)
    print result2
    print postx(result2,cookies)

结果
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值