ctfshow web入门(一) 已完结


前言

由于太菜了,所以最近要多做点题


一、信息收集 web2

题目:
在这里插入图片描述
题目提示js前台拦截,可以想到用Burp Suite抓包,然后重发即可得到flag:

在这里插入图片描述


二、信息收集 web3

题目:在这里插入图片描述
题目提示抓个包看看:
在这里插入图片描述
然后抓包得到flag:
在这里插入图片描述


三、信息收集 web4

题目:
在这里插入图片描述

题目提示:robots.txt,直接访问/robots.txt:
在这里插入图片描述
在访问/flagishere.txt:
在这里插入图片描述


四、信息收集 web5

题目都是一样的,后面就不放啦(懒一下下

题目提示:phps源码泄露可以帮上忙
说是源码泄露,之前有遇到过类似的,所以一开始用御剑扫了一下后台,只发现了index.php:

在这里插入图片描述
然后又去查了一下phps是啥:
phps是php源文件,用于给访问者(用户)查看web页面的php源码。
于是结合了一波之前的index.php,访问/index.phps,可以从中下载源码,得到flag:
在这里插入图片描述


五、信息收集 web6

题目提示:解压源代码到当前目录,一开始没有明白啥意思,抓包扫后台一通操作后没有啥结果,查了一下,才发现意思是说可能含有网站备份源码在当前目录下,测试一下/WWW.zip /www.zip(之前做buuctf的时候有一道反序列化题是网站备份WWW.zip),发现是/www.zip,直接下载压缩包解压即可。

在这里插入图片描述
在这里插入图片描述
查看fl00g.txt得到flag。


六、信息收集 web7

题目提示:版本控制很重要,但不要部署到生产环境更重要。
说实话,没有看懂,有点晕(太菜了,以后会看懂的),老规矩F12、 抓包、扫目录,用御剑扫的时候啥也没有扫到,然后用dirsearch加上自己的字典扫到了后台的/.git文件:
在这里插入图片描述
dirsearch下载与使用参考:
https://blog.csdn.net/Jiajiajiang_/article/details/81391982

再访问http://cdf96a81-9bc1-4dfa-96f5-04acb7df2f99.challenge.ctf.show/.git/ 得到flag。


七、信息收集 web8

题目提示:版本控制很重要,但不要部署到生产环境更重要。
提示跟上面一样,做完上面一题之后知道了,版本泄露不是git泄露就是svn泄露,直接访问/.svn/,或者用dirsearch爆破后台就可以得出flag。
在这里插入图片描述


八 、爆破 web21

题目有点难,也有点提示,但是写的时候在这里犯傻了:

以为是字典下载链接在那篇博客里,找了很久都没有找到,一问别人才知道下载链接就在提示下面……

在这里插入图片描述

打开字典看了一下,是网站后台密码的字典,用户名没有给,猜测是amdin,要是不对的话后面再换别的,用bp抓了个包(今天晚上的bp也有点问题,明天就装新的),知道是GET传参:
在这里插入图片描述
并且还知道了参数使用base64加密的,用bp自带的编码器进行解码可以知道:

在这里插入图片描述
并且传输的时候使用 ’ :’ 隔开的
在这里插入图片描述

基本信息掌握得差不多了,可以写个python脚本爆破(不是很会写,现学现卖的):

# date:2022-2-23 23:09
# author:marxycj


import requests
import time
import base64


url = 'http://f40af555-93ba-42e8-b62a-5814be12c8f8.challenge.ctf.show/'

username = 'admin'  # 测试的弱口令,字典爆破完都不对的时候再换
password = []
# 从字典读出密码
with open('password.txt', 'r') as f:
    while 1:
        temp = f.readline()
        if temp:    # 没有读完就一直读
            password.append(temp)
        else:
            break

for temp in password:
    user_pass = username + temp[:-1]
    header = {
        'Authorization': 'Basic{}'.format(base64.b64encode(user_pass.encode('utf-8')).decode('utf-8'))
    }
    result = requests.get(url, headers=header)
    time.sleep(0.2)
    if result.status_code == 200:   # 返回结果正确时
        print(result.text)
        break

爆破的时间有点长,为了早点写完去睡觉,看第三个提示,知道用户名是admin,密码是shark63,得到flag,去睡觉咯~


九 、爆破 web22

题目要求爆破ctf.show的子域名,找一个在线工具进行爆破:
(不过可能不全)
在这里插入图片描述

也可以用Layer子域名挖掘机进行子域名爆破(比较慢):
在这里插入图片描述


十、爆破 web23

先来看题目:
在这里插入图片描述
给了一串代码,放到编译器仔细阅读一波并加上注释:

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 11:43:51
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/
error_reporting(0); # 判断是否为空的函数

include('flag.php');
if (isset($_GET['token'])) {
    $token = md5($_GET['token']);   # token = token的md5值
    if (substr($token, 1, 1) === substr($token, 14, 1) && substr($token, 14, 1) === substr($token, 17, 1)) {    # 并且token的第1位 = 第14位 = 第17位,substr函数用于返回字符串的一部分
        # intval函数用于获取变量的整数值:
        if ((intval(substr($token, 1, 1)) + intval(substr($token, 14, 1)) + substr($token, 17, 1)) / substr($token, 1, 1) === intval(substr($token, 31, 1))) {
            echo $flag;
        }
    }
} else {
    highlight_file(__FILE__);

}

大致意思是get一个值 token,token的md5值满足条件: 第1位 = 第14位 = 第17位,并且取整后 第1位 + 第14位 + 第17位/第1位 === 第17位,此时就会输出flag。

然后再写一个python脚本爆破一下,这题写了很久的原因就是我想直接用在phpstorm上面把token爆破出来,但是php水平又很差,于是想了很久……

后来发现python好像也可以完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值